Dovresti essere in grado di inserire il file dump direttamente in psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Se vuoi il id
colonna in "incremento automatico", quindi 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 assegnato automaticamente il successivo valore disponibile. PostgreSQL inoltre non riconoscerà AUTOINCREMENT
comandi, quindi questi devono essere rimossi.
Dovrai anche controllare datetime
colonne nello schema SQLite e modificarle in timestamp
per PostgreSQL. (Grazie a Clay per averlo segnalato.)
Se hai booleani nel tuo SQLite, puoi convertire 1
e 0
a 1::boolean
e 0::boolean
(rispettivamente) oppure potresti cambiare la colonna booleana in un numero intero nella sezione dello schema del dump e quindi correggerli manualmente all'interno di PostgreSQL dopo l'importazione.
Se hai BLOB nel tuo SQLite, ti consigliamo di modificare lo schema per utilizzare bytea
. Probabilmente dovrai aggiungere un po' di decode
chiamate pure. Scrivere una fotocopiatrice veloce e sporca nella tua lingua preferita potrebbe essere più facile che manipolare l'SQL se hai molti BLOB da gestire.
Come al solito, se hai chiavi esterne, probabilmente vorrai esaminare set constraints all deferred
per evitare problemi di inserimento dell'ordine, inserire il comando all'interno della coppia BEGIN/COMMIT.
Grazie a Nicolas Riley per le note booleane, blob e vincoli.
Se hai `
sul tuo codice, generato da alcuni client SQLite3, devi rimuoverli.
PostGRESQL inoltre non riconosce unsigned
colonne, quindi potresti voler eliminarlo o aggiungere un vincolo personalizzato come questo:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
Mentre SQLite imposta i valori nulli predefiniti su ''
, PostgreSQL richiede che siano impostati come NULL
.
La sintassi nel file di dump di SQLite sembra essere per lo più compatibile con PostgreSQL, quindi puoi correggere alcune cose e inviarlo a psql
. L'importazione di una grande quantità di dati tramite SQL INSERT potrebbe richiedere del tempo, ma funzionerà.