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