Vous devriez pouvoir alimenter ce fichier de vidage directement dans psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Si vous voulez que la id
colonne "s'incrémente automatiquement", changez son type de "int" à "serial" dans la ligne de création de table. PostgreSQL attachera ensuite une séquence à cette colonne afin que les INSERT avec des identifiants NULL soient automatiquement affectés à la prochaine valeur disponible. PostgreSQL ne reconnaîtra pas non plus les AUTOINCREMENT
commandes, elles doivent donc être supprimées.
Vous voudrez également vérifier les datetime
colonnes dans le schéma SQLite et les changer timestamp
pour PostgreSQL (merci à Clay pour l'avoir signalé).
Si vous avez booléens dans votre SQLite, vous pouvez convertir 1
et 0
et 1::boolean
et 0::boolean
(respectivement) ou vous pouvez changer la colonne booléenne à un nombre entier dans la section de schéma de la décharge, puis les réparer manuellement dans PostgreSQL après l'importation.
Si vous avez des BLOB dans votre SQLite, vous voudrez ajuster le schéma à utiliser bytea
. Vous devrez probablement également mélanger certains decode
appels . Ecrire un copieur quick'n'dirty dans votre langue préférée pourrait être plus facile que de modifier le SQL si vous avez beaucoup de BLOB à gérer.
Comme d'habitude, si vous avez des clés étrangères, vous voudrez probablement examiner set constraints all deferred
pour éviter les problèmes de commande d'insertion, en plaçant la commande à l'intérieur de la paire BEGIN / COMMIT.
Merci à Nicolas Riley pour les notes booléennes, blob et contraintes.
Si vous avez `
sur votre code, tel que généré par certains clients SQLite3, vous devez les supprimer.
PostGRESQL ne reconnaît pas non plus les unsigned
colonnes, vous voudrez peut-être les supprimer ou ajouter une contrainte personnalisée telle que celle-ci:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
Alors que SQLite ''
définit par défaut les valeurs nulles sur , PostgreSQL exige qu'elles soient définies comme NULL
.
La syntaxe du fichier de vidage SQLite semble être principalement compatible avec PostgreSQL, vous pouvez donc patcher quelques éléments et les alimenter psql
. L'importation d'une grande pile de données via SQL INSERT peut prendre un certain temps, mais cela fonctionnera.