Bu döküm dosyasını doğrudan şuraya besleyebilmelisiniz psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
id
Sütunun "otomatik artış" yapmasını istiyorsanız , tablo oluşturma satırında türünü "int" yerine "seri" olarak değiştirin. PostgreSQL daha sonra bu sütuna bir sıra ekleyecektir, böylece NULL kimlikli INSERT'lere bir sonraki kullanılabilir değer otomatik olarak atanır. PostgreSQL de AUTOINCREMENT
komutları tanımayacağından bunların kaldırılması gerekir.
Ayrıca datetime
SQLite şemasındaki sütunları kontrol etmek ve bunları timestamp
PostgreSQL için değiştirmek isteyeceksiniz . ( Bunu işaret ettiği için Clay'e teşekkürler .)
Eğer SQLite'ta Boolean varsa o zaman dönüştürebilirsiniz 1
ve 0
karşı 1::boolean
ve 0::boolean
(sırasıyla) veya dökümü şema bölümünde bir tam sayıya boole sütun değiştirin ve sonra aktarılmasından sonra PostgreSQL içindeki elle onları düzeltmek.
SQLite'ınızda BLOB'lar varsa, kullanılacak şemayı ayarlamak isteyeceksiniz bytea
. Muhtemelen bazı decode
aramaları da karıştırmanız gerekecek . En sevdiğiniz dilde bir quick'n'dirty kopyalayıcı yazmak, uğraşmanız gereken çok sayıda BLOB varsa, SQL'i karıştırmaktan daha kolay olabilir.
Her zaman olduğu gibi, yabancı anahtarlarınız varsa, muhtemelen set constraints all deferred
BEGIN / COMMIT çiftinin içine komutu yerleştirerek sipariş sorunları eklemekten kaçınmak isteyeceksiniz .
Boolean, blob ve kısıtlama notları için Nicolas Riley'ye teşekkürler .
Eğer varsa `
kodunuzda bazı SQLite3 istemcileri tarafından oluşturulan, bunları kaldırmak gerekir.
PostGRESQL ayrıca unsigned
sütunları da tanımaz , bu nedenle bunu kaldırmak veya şunun gibi özel yapılmış bir kısıtlama eklemek isteyebilirsiniz:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
SQLite varsayılan olarak null değerleri ''
olarak ayarlasa da, PostgreSQL bunların NULL
.
SQLite döküm dosyasındaki sözdizimi çoğunlukla PostgreSQL ile uyumlu görünmektedir, bu nedenle birkaç şeyi yamalayıp onu besleyebilirsiniz psql
. SQL INSERT'ler aracılığıyla büyük miktarda veriyi içe aktarmak biraz zaman alabilir ama işe yarayacaktır.