คุณควรจะฟีดไฟล์ดัมพ์นั้นตรงไปที่psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
หากคุณต้องการให้id
คอลัมน์เป็น "การเพิ่มอัตโนมัติ" ให้เปลี่ยนประเภทจาก "int" เป็น "อนุกรม" ในบรรทัดการสร้างตาราง จากนั้น PostgreSQL จะแนบลำดับไปยังคอลัมน์นั้นเพื่อให้ INSERTs ที่มี NULL ids ได้รับการกำหนดค่าที่พร้อมใช้งานถัดไปโดยอัตโนมัติ PostgreSQL จะไม่รู้จักAUTOINCREMENT
คำสั่งดังนั้นจึงจำเป็นต้องลบออก
คุณจะต้องตรวจสอบdatetime
คอลัมน์ในสคีมา SQLite และเปลี่ยนเป็นtimestamp
สำหรับ PostgreSQL (ขอบคุณClay ที่ชี้ให้เห็นสิ่งนี้)
หากคุณมีบูลีนใน SQLite ของคุณคุณสามารถแปลง1
และ0
เป็น1::boolean
และ0::boolean
(ตามลำดับ) หรือคุณสามารถเปลี่ยนคอลัมน์บูลีนเป็นจำนวนเต็มในส่วนสคีมาของดัมพ์จากนั้นแก้ไขด้วยมือภายใน PostgreSQL หลังจากการนำเข้า
ถ้าคุณมี BLOBs ใน SQLite bytea
ของคุณแล้วคุณจะต้องการที่จะปรับสคีมากับการใช้งาน คุณอาจจะต้องผสมในบางสายเช่นกันdecode
การเขียนเครื่องถ่ายเอกสาร Quick'n'dirty ในภาษาที่คุณชื่นชอบอาจจะง่ายกว่าการทำให้ SQL ยุ่งเหยิงหากคุณมี BLOB จำนวนมากที่ต้องจัดการ
ตามปกติหากคุณมีคีย์ต่างประเทศคุณอาจต้องการตรวจสอบset constraints all deferred
เพื่อหลีกเลี่ยงปัญหาการแทรกการสั่งซื้อโดยวางคำสั่งไว้ในคู่ BEGIN / COMMIT
ขอบคุณNicolas Rileyสำหรับบันทึกบูลีนหยดและข้อ จำกัด
หากคุณมี`
โค้ดของคุณซึ่งสร้างโดยไคลเอนต์ SQLite3 บางตัวคุณจำเป็นต้องลบออก
PostGRESQL ยังไม่รู้จักunsigned
คอลัมน์ดังนั้นคุณอาจต้องการวางหรือเพิ่มข้อ จำกัด ที่กำหนดเองเช่นนี้:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
ในขณะที่ SQLite เริ่มต้นค่า null เป็น''
PostgreSQL กำหนดให้ตั้งค่าเป็นNULL
.
ไวยากรณ์ในแฟ้มการถ่ายโอนข้อมูล SQLite ดูเหมือนจะเข้ากันได้ส่วนใหญ่กับ PostgreSQL เพื่อให้คุณสามารถแก้ไขเล็ก ๆ น้อย ๆ psql
และอาหารมัน การนำเข้าข้อมูลจำนวนมากผ่าน SQL INSERTs อาจใช้เวลาสักครู่ แต่จะได้ผล