आप सीधे psql
में है कि डंप फ़ाइल को खिलाने के लिए सक्षम होना चाहिए:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
आप id
स्तंभ "ऑटो वेतन वृद्धि" तो अपने प्रकार "int" से तालिका में बदलने के लिए करने के लिए "धारावाहिक" चाहते हैं निर्माण लाइन PostgreSQL तो उस कॉलम में एक दृश्य देते हैं ताकि शून्य आईडी के साथ आवेषण स्वचालित रूप से अगले उपलब्ध मूल्य आवंटित किया जाएगा होगा। PostgreSQL भी AUTOINCREMENT
आदेशों को पहचान नहीं होगा, इसलिए इन हटाया जा करने की जरूरत है।
तुम भी SQLite स्कीमा में datetime
स्तंभों के लिए जांच करने और उन्हें timestamp
(इस ओर इशारा करते हुए के लिए Clay करने के लिए धन्यवाद) PostgreSQL के लिए बदलने के लिए चाहता हूँ।
यदि आप अपने SQLite में बूलियन्स तो आप 1
और 0
और 1::boolean
और 0::boolean
(क्रमशः) में परिवर्तित कर सकते हैं या आप डंप की स्कीमा खंड में एक पूर्णांक के लिए बूलियन स्तंभ को बदलने और उसके बाद अंदर हाथ से उन्हें ठीक कर सकता है आयात के बाद PostgreSQL।
आप अपने SQLite में BLOBs है तो आप स्कीमा bytea
उपयोग करने के लिए समायोजित करने के लिए चाहता हूँ। आपको शायद कुछ decode
calls as well में मिश्रण करने की आवश्यकता होगी। अपने पसंदीदा भाषा में एक quick'n'dirty कॉपियर लेखन एसक्यूएल अगर आप BLOBs का एक बहुत हालांकि से निपटने के लिए mangling की तुलना में आसान हो सकता है।
सामान्य रूप से, यदि आपके पास विदेशी कुंजी हैं तो आप संभवतया set constraints all deferred
में डालने की समस्या से बचने के लिए, BEGIN/COMMIT जोड़ी के अंदर कमांड डालने के लिए देखना चाहेंगे।
बूलियन, ब्लॉब के लिए Nicolas Riley के लिए धन्यवाद, और बाधाओं के नोटों।
यदि आपके पास कुछ कोडसाइट 3 क्लाइंट्स द्वारा जेनरेट किए गए आपके कोड पर `
है, तो आपको उन्हें हटाने की आवश्यकता है।
PostgreSQL भी unsigned
कॉलम भी नहीं पहचानती, आपको लगता है कि ड्रॉप करना चाह सकते हैं, या इस जैसे एक कस्टम निर्मित बाधा जोड़ें:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
जबकि ''
को SQLite चूक शून्य मान, PostgreSQL के लिए उन्हें आवश्यकता है NULL
के रूप में सेट किया जाना चाहिए।
SQLite डंप फ़ाइल में सिंटैक्स पोस्टग्रेएसक्यूएल के साथ अधिकतर संगत प्रतीत होता है ताकि आप कुछ चीजें पैच कर सकें और इसे psql
पर फ़ीड कर सकें। एसक्यूएल आईएनएसईआरटी के माध्यम से डेटा का एक बड़ा ढेर आयात करने में कुछ समय लग सकता है लेकिन यह काम करेगा।
धन्यवाद! धन्यवाद! यह मेरे लिए बहुत अच्छा काम किया। मेरे पास एक कार्यक्रम था जो पहले माइग्रेशन कर रहा था लेकिन यह बहुत धीमा था और अन्य समस्याएं पैदा कर रहा था। आपके आदेश में सुधार। यह होना चाहिए-डी, नहीं-डी। – DevX
एक नोट अगर किसी और को यह समस्या है, तो SQLITE के पास मेरे शून्य मान '' के रूप में थे। POSTGRESQL को शून्य की आवश्यकता है। तो डंप फ़ाइल को ठीक करने के लिए vim को फायर करें और कमांड करें:% s/''/NULL/g। – DevX
नहीं, आप लेनदेन को कुछ ओवरहेड से बचने के लिए रखना चाहते हैं। –