आपको उस डंप फ़ाइल को सीधे psql
. में फीड करने में सक्षम होना चाहिए :
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
अगर आप id
चाहते हैं कॉलम को "ऑटो इंक्रीमेंट" में बदल दें और फिर टेबल क्रिएशन लाइन में इसके प्रकार को "इंट" से "सीरियल" में बदल दें। PostgreSQL तब उस कॉलम में एक अनुक्रम संलग्न करेगा ताकि NULL आईडी वाले INSERTs को स्वचालित रूप से अगला उपलब्ध मान असाइन किया जा सके। PostgreSQL AUTOINCREMENT
को भी नहीं पहचान पाएगा आदेश, इसलिए इन्हें हटाने की आवश्यकता है।
आप datetime
. के लिए भी जांच करना चाहेंगे SQLite स्कीमा में कॉलम और उन्हें timestamp
. में बदलें पोस्टग्रेएसक्यूएल के लिए। (इसे इंगित करने के लिए क्ले को धन्यवाद।)
यदि आपके SQLite में बूलियन हैं तो आप 1
. को कन्वर्ट कर सकते हैं और 0
करने के लिए 1::boolean
और 0::boolean
(क्रमशः) या आप डंप के स्कीमा सेक्शन में बूलियन कॉलम को एक पूर्णांक में बदल सकते हैं और फिर आयात के बाद उन्हें PostgreSQL के अंदर हाथ से ठीक कर सकते हैं।
यदि आपके SQLite में BLOB हैं तो आप bytea
का उपयोग करने के लिए स्कीमा को समायोजित करना चाहेंगे . आपको शायद कुछ decode
में मिलाना होगा कॉल भी करते हैं। यदि आप बहुत सारे बीएलओबी से निपटने के लिए हैं, तो अपनी पसंदीदा भाषा में एक त्वरित 'गंदा कॉपियर लिखना एसक्यूएल को मैनेज करने से आसान हो सकता है।
हमेशा की तरह, यदि आपके पास विदेशी कुंजियाँ हैं तो आप शायद set constraints all deferred
पर देखना चाहेंगे इंसर्ट ऑर्डरिंग समस्याओं से बचने के लिए, कमांड को BEGIN/COMMIT पेयर के अंदर रखें।
बूलियन, बूँद, और बाधा नोट के लिए निकोलस रिले को धन्यवाद।
अगर आपके पास `
. है आपके कोड पर, जैसा कि कुछ SQLite3 क्लाइंट द्वारा जेनरेट किया गया है, आपको उन्हें हटाना होगा।
PostGRESQL unsigned
को भी नहीं पहचानता है कॉलम, ताकि आप उसे छोड़ना चाहें या इस तरह की कस्टम-निर्मित बाधा जोड़ना चाहें:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
जबकि SQLite शून्य मानों को ''
. पर डिफॉल्ट करता है , PostgreSQL को उन्हें NULL
. के रूप में सेट करने की आवश्यकता है ।
SQLite डंप फ़ाइल में सिंटैक्स ज्यादातर PostgreSQL के साथ संगत प्रतीत होता है ताकि आप कुछ चीजों को पैच कर सकें और इसे psql
पर फीड कर सकें। . SQL INSERTs के माध्यम से डेटा का एक बड़ा ढेर आयात करने में कुछ समय लग सकता है लेकिन यह काम करेगा।