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, aby idkolumna była „automatycznie zwiększana”, zmień jej typ z „int” na „serial” w linii tworzenia tabeli. PostgreSQL dołączy wtedy sekwencję do tej kolumny, tak aby wstawkom INSERT z identyfikatorami NULL automatycznie przypisywana była następna dostępna wartość. PostgreSQL również nie rozpoznaje AUTOINCREMENTpoleceń, więc należy je usunąć.
Będziesz także chciał sprawdzić datetimekolumny w schemacie SQLite i zmienić je timestampna PostgreSQL. (Dzięki Clayowi za wskazanie tego).
Jeśli masz wartości logiczne w swoim SQLite, możesz przekonwertować 1i 0na 1::booleani 0::boolean(odpowiednio) lub możesz zmienić kolumnę boolowską na liczbę całkowitą w sekcji schematu zrzutu, a następnie naprawić je ręcznie w PostgreSQL po imporcie.
Jeśli masz obiekty BLOB w swoim SQLite, będziesz chciał dostosować schemat do użycia bytea. Prawdopodobnie będziesz musiał również włączyć się do niektórych decoderozmów . Napisanie szybkiej i brudnej kserokopiarki w swoim ulubionym języku może być łatwiejsze niż manipulowanie kodem SQL, jeśli jednak masz do czynienia z wieloma BLOBami.
Jak zwykle, jeśli masz klucze obce, prawdopodobnie będziesz chciał zajrzeć, set constraints all deferredaby uniknąć problemów z kolejnością wstawiania, umieszczając polecenie wewnątrz pary BEGIN / COMMIT.
Podziękowania dla Nicolasa Rileya za notatki logiczne, blob i ograniczenia.
Jeśli masz `na swoim kodzie wygenerowanym przez niektórych klientów SQLite3, musisz je usunąć.
PostGRESQL również nie rozpoznaje unsignedkolumn, więc możesz to porzucić lub dodać niestandardowe ograniczenie, takie jak to:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
Podczas gdy SQLite domyślnie przyjmuje wartości null na '', PostgreSQL wymaga, aby były ustawione 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 przekazać je psql. Importowanie dużej ilości danych przez SQL INSERT może zająć trochę czasu, ale zadziała.