Powinieneś być w stanie przesłać ten plik zrzutu bezpośrednio do psql :
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Jeśli chcesz id kolumna na „auto increment”, a następnie zmień jej typ z „int” na „serial” w wierszu tworzenia tabeli. PostgreSQL dołączy następnie sekwencję do tej kolumny, dzięki czemu INSERTom z identyfikatorami NULL zostanie automatycznie przypisana następna dostępna wartość. PostgreSQL również nie rozpoznaje AUTOINCREMENT polecenia, więc należy je usunąć.
Będziesz także chciał sprawdzić datetime kolumny w schemacie SQLite i zmień je na timestamp dla PostgreSQL. (Podziękowania dla Claya za wskazanie tego.)
Jeśli masz wartości logiczne w swoim SQLite, możesz przekonwertować 1 i 0 do 1::boolean i 0::boolean (odpowiednio) lub możesz zmienić kolumnę logiczną na liczbę całkowitą w sekcji schematu zrzutu, a następnie naprawić je ręcznie w PostgreSQL po imporcie.
Jeśli masz BLOB w swoim SQLite, będziesz chciał dostosować schemat, aby używał bytea . Prawdopodobnie będziesz musiał wmieszać trochę decode również dzwoni. Napisanie szybkiej i brudnej kopii w twoim ulubionym języku może być łatwiejsze niż manipulowanie SQL, jeśli masz do czynienia z wieloma BLOBami.
Jak zwykle, jeśli masz klucze obce, prawdopodobnie będziesz chciał zajrzeć do set constraints all deferred aby uniknąć problemów z kolejnością wstawiania, umieść polecenie wewnątrz pary BEGIN/COMMIT.
Podziękowania dla Nicolasa Rileya za uwagi logiczne, blob i ograniczenia.
Jeśli masz ` w kodzie wygenerowanym przez niektórych klientów SQLite3, musisz je usunąć.
PostGRESQL również nie rozpoznaje unsigned kolumn, więc możesz chcieć je usunąć lub dodać niestandardowe ograniczenie, takie jak to:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
Podczas gdy SQLite domyślnie wartości null to '' , PostgreSQL wymaga ich ustawienia jako NULL .
Składnia w pliku zrzutu SQLite wydaje się być w większości zgodna z PostgreSQL, więc możesz załatać kilka rzeczy i przesłać ją do psql . Importowanie dużego stosu danych przez SQL INSERT może trochę potrwać, ale zadziała.