यह बहुत कुछ है बाद में मानों को अपडेट करने की तुलना में आपके आयात सत्र के लिए समय क्षेत्र निर्धारित करने के लिए अधिक कुशल।
मुझे यह आभास होता है कि आप समय क्षेत्र के बारे में एक सेटिंग की तरह सोचते हैं जो तालिकाओं में अन्यथा अपरिवर्तित मानों पर लागू होता है। लेकिन ऐसा कतई नहीं है। इसे एक इनपुट/आउटपुट संशोधक के रूप में सोचें। वास्तविक timestamp
मान (समय क्षेत्र के साथ या बिना) हमेशा हैं आंतरिक रूप से UTC टाइमस्टैम्प के रूप में संग्रहीत ('2000-01-01 00:00'
के बाद से सेकंड की संख्या) ) बहुत अधिक विवरण:
UPDATE
आपके दूसरे उदाहरण में तालिका का आकार दोगुना हो जाता है, क्योंकि प्रत्येक पंक्ति अमान्य हो जाती है और एक नया संस्करण जोड़ा जाता है (इस तरह UPDATE
MVCC
के साथ काम करता है पोस्टग्रेज में)। महंगे ऑपरेशन के अलावा, VACUUM
टेबल ब्लोट को साफ करने के लिए बाद में और काम करना होगा। बहुत अक्षम।
यह पूरी तरह से सुरक्षित है करने के लिए SET
सत्र के लिए स्थानीय समय क्षेत्र। यह किसी भी तरह से समवर्ती संचालन को प्रभावित नहीं करता है। बीटीडब्ल्यू, SET SESSION
सादा SET
. जैसा ही है क्योंकि SESSION
वैसे भी डिफ़ॉल्ट है।
अगर आप बिल्कुल बनना चाहते हैं निश्चित रूप से, आप सेटिंग को वर्तमान लेन-देन . तक सीमित कर सकते हैं SET LOCAL
. के साथ . मैं मैनुअल को यहां
उद्धृत करता हूं
एक साथ रखें:
BEGIN;
SET LOCAL timezone = 'UTC';
COPY tabledata FROM 'c:\Users\Public\Downloads\test.csv' DELIMITERS ',' CSV;
COMMIT;
जाँच करें:
SHOW timezone;