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

pg_dump --exclude-table के साथ अभी भी पृष्ठभूमि में वे टेबल शामिल हैं COPY कमांड जो इसे चलाता है?

pg_dump प्रत्येक चाइल्ड टेबल को उनके माता-पिता से अलग और स्वतंत्र रूप से डंप करता है, इस प्रकार जब आप एक हाइपरटेबल को बाहर करते हैं, तो इसके चंक टेबल को अभी भी डंप किया जाएगा। इस प्रकार आप देखते हैं कि सभी चंक टेबल अभी भी डंप हैं।

ध्यान दें कि हाइपरटेबल्स और चंक्स को छोड़कर डंप को TimescaleDB इंस्टेंस में सही ढंग से पुनर्स्थापित करने के लिए काम नहीं करेगा, क्योंकि TimescaleDB मेटाडेटा डेटाबेस की वास्तविक स्थिति से मेल नहीं खाएगा। TimescaleDB हाइपरटेबल्स और चंक्स के बारे में जानकारी के साथ कैटलॉग टेबल बनाए रखता है और वे pg_dump के लिए सिर्फ एक अन्य उपयोगकर्ता टेबल हैं। , इसलिए यह उन्हें डंप कर देगा (जो महत्वपूर्ण है), लेकिन जब उन्हें पुनर्स्थापित किया जाता है तो उनमें सभी हाइपरटेबल्स और चंक्स होंगे, जो डंप से पहले डेटाबेस में थे।

इसलिए आपको उन तालिकाओं से डेटा को बाहर करने की आवश्यकता है जिन्हें आप बाहर करना चाहते हैं (हाइपरटेबल्स या स्वयं खंड नहीं), जो डंप को कम करेगा और समय को पुनर्स्थापित करेगा। फिर बहाल करने के बाद बहिष्कृत हाइपरटेबल्स को छोड़ना आवश्यक होगा। आप pg_dump . के साथ तालिका डेटा बहिष्कृत करते हैं पैरामीटर --exclude-table-data . TimescaleDB GitHub रेपो में एक समस्या है, जो चर्चा करता है कि हाइपरटेबल डेटा को डंप से कैसे निकाला जाए ए> . समस्या यह बताती है कि बहिष्कृत स्ट्रिंग कैसे उत्पन्न करें:

SELECT string_agg(format($$--exclude-table-data='%s.%s'$$,coalesce(cc.schema_name,c.schema_name), coalesce(cc.table_name, c.table_name)), ' ')
FROM _timescaledb_catalog.hypertable h 
  INNER JOIN _timescaledb_catalog.chunk c on c.hypertable_id = h.id 
  LEFT JOIN _timescaledb_catalog.chunk cc on c.compressed_chunk_id = cc.id
WHERE h.schema_name = <foo> AND h.table_name = <bar> ;

वैकल्पिक रूप से, आप hypertable_id पा सकते हैं और हाइपरटेबल आईडी के साथ प्रीफ़िक्स्ड सभी चंक टेबल से डेटा को बाहर करें। hypertable_id ढूंढें कैटलॉग टेबल से _timescaledb_catalog.hypertable :

SELECT id
FROM _timescaledb_catalog.hypertable
WHERE schema_name = 'mySchema' AND table_name = 'hyper1';

मान लें कि आईडी 2 है। फिर डेटाबेस को निर्देशों के अनुसार डंप करें :

pg_dump -U user -Fc -f TestDB_Backup.bak \
  --exclude-table-data='_timescaledb_internal._hyper_2*' TestDB 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grib2 से PostGIS रेखापुंज - किसी को भी यह काम करने के लिए मिलता है?

  2. एंड्रॉइड प्रोजेक्ट में जेडीबीसी पोस्टग्रेस्क्ल ड्राइवर नहीं मिला

  3. दौड़ की स्थिति से बचना, Django + Heroku + PostgreSQL

  4. PostgreSQL के लिए Amazon RDS और Aurora की पेशकशों का अवलोकन

  5. पोस्टग्रेएसक्यूएल सर्वर शेर पर बंद नहीं होगा (मैक ओएस 10.7)