PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

डेटा का समय क्षेत्र मान बदलना

यह बहुत कुछ है बाद में मानों को अपडेट करने की तुलना में आपके आयात सत्र के लिए समय क्षेत्र निर्धारित करने के लिए अधिक कुशल।

मुझे यह आभास होता है कि आप समय क्षेत्र के बारे में एक सेटिंग की तरह सोचते हैं जो तालिकाओं में अन्यथा अपरिवर्तित मानों पर लागू होता है। लेकिन ऐसा कतई नहीं है। इसे एक इनपुट/आउटपुट संशोधक के रूप में सोचें। वास्तविक 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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tomcat jndi कनेक्शन को पोस्टग्रेस्क्ल को प्रमाण पत्र प्रदान करना

  2. PostgreSQL में बड़ी XML फ़ाइल (~10GB) कैसे आयात करें

  3. यह कैसे संभव है कि SQL क्वेरी और ActiveRecord.find_by_sql अलग-अलग परिणाम लौटाएं?

  4. PostgreSQL में तीन तालिकाओं में शामिल होने के बाद पंक्तियों की गणना करें

  5. PostgreSQL में क्रॉस टेबल की कमी