pg_dump
हो सकता है कि स्कीमा ने अतीत में काम नहीं किया हो, लेकिन अब यह काम करता है।
pg_dump -Cs -h my.redshift.server.com -p 5439 database_name > database_name.sql
कैविएट एम्पटोर: pg_dump
अभी भी कुछ पोस्टग्रेज विशिष्ट सिंटैक्स उत्पन्न करता है, और Redshift SORTKEY
. की भी उपेक्षा करता है और DISTSTYLE
आपकी तालिकाओं के लिए परिभाषाएँ।
एक और अच्छा विकल्प है प्रकाशित AWS का उपयोग करना व्यवस्थापक स्क्रिप्ट दृश्य अपना डीडीएल जनरेट करने के लिए। यह SORTKEY/DISTSTYLE को संभालता है, लेकिन जब सभी विदेशी कुंजियों को कैप्चर करने की बात आती है, तो मुझे यह छोटी गाड़ी लगती है, और तालिका अनुमतियों/मालिकों को संभालती नहीं है। आपका मिलेज भिन्न हो सकता है।
डेटा का डंप प्राप्त करने के लिए, आपको अभी भी का उपयोग करना होगा। UNLOAD
आदेश
दुर्भाग्य से प्रत्येक टेबल पर।
इसे उत्पन्न करने का एक तरीका यहां दिया गया है। ध्यान रखें कि select *
यदि आपकी गंतव्य तालिका में आपकी स्रोत तालिका के समान कॉलम क्रम नहीं है, तो सिंटैक्स विफल हो जाएगा:
select
ist.table_schema,
ist.table_name,
'unload (''select col1,col2,etc from "' || ist.table_schema || '"."' || ist.table_name || '"'')
to ''s3://SOME/FOLDER/STRUCTURE/' || ist.table_schema || '.' || ist.table_name || '__''
credentials ''aws_access_key_id=KEY;aws_secret_access_key=SECRET''
delimiter as '',''
gzip
escape
addquotes
null as ''''
--encrypted
--parallel off
--allowoverwrite
;'
from information_schema.tables ist
where ist.table_schema not in ('pg_catalog')
order by ist.table_schema, ist.table_name
;