Dovresti essere in grado di inserire il file di dump direttamente in psql:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Se vuoi che la idcolonna venga "incrementata automaticamente", cambia il suo tipo da "int" a "seriale" nella riga di creazione della tabella. PostgreSQL allegherà quindi una sequenza a quella colonna in modo che agli INSERT con ID NULL venga automaticamente assegnato il successivo valore disponibile. Anche PostgreSQL non riconoscerà i AUTOINCREMENTcomandi, quindi è necessario rimuoverli.
Dovrai anche controllare le datetimecolonne nello schema SQLite e cambiarle in timestampPostgreSQL (grazie a Clay per averlo sottolineato).
Se si dispone di booleani in SQLite, allora è possibile convertire 1e 0ed 1::booleane 0::boolean(rispettivamente) o si può cambiare la colonna booleana in un intero nella sezione schema della discarica e poi fissarli a mano all'interno PostgreSQL dopo l'importazione.
Se hai BLOB nel tuo SQLite, ti consigliamo di regolare lo schema da utilizzare bytea. Probabilmente avrai anche bisogno di unire alcune decodechiamate . Scrivere una copiatrice veloce e sporca nella tua lingua preferita potrebbe essere più facile che alterare l'SQL se hai molti BLOB da gestire.
Come al solito, se hai chiavi esterne, probabilmente vorrai esaminare set constraints all deferredper evitare problemi di ordinamento dell'inserimento, inserendo il comando all'interno della coppia BEGIN / COMMIT.
Grazie a Nicolas Riley per le note booleane, blob e dei vincoli.
Se hai `sul tuo codice, come generato da alcuni client SQLite3, devi rimuoverli.
PostGRESQL inoltre non riconosce le unsignedcolonne, potresti volerlo eliminare o aggiungere un vincolo personalizzato come questo:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
Mentre SQLite imposta i valori null di default su '', PostgreSQL richiede che siano impostati come NULL.
La sintassi nel file di dump SQLite sembra essere per lo più compatibile con PostgreSQL, quindi puoi correggere alcune cose e darle in pasto psql. L'importazione di una grande pila di dati tramite SQL INSERT potrebbe richiedere del tempo, ma funzionerà.