Comment puis-je importer des tables à partir d'une autre base de données en sqlite?
j'ai des bases de données SQLite nommées database1
avec une table t1
et database2
avec une table t2
. Je veux importer la table t2
. Quelle commande(s) dois-je utiliser?
3 réponses
Ouvrir database2
sqlite3
outil en ligne de commande et lire la définition de la table avec la commande .schema t2
.
(Alternativement, utilisez tout autre outil qui permet de lire la définition de la table.)
alors ouvrez database1
,joindre l'autre base de données avec la commande:
ATTACH 'database2file' AS db2;
puis créer la table t2
, et de copier les données sur:
INSERT INTO t2 SELECT * FROM db2.t2;
commande Shell:
sqlite3 database1
dans la coquille de SQLite:
sqlite> ATTACH 'database2' AS db2;
sqlite> CREATE TABLE t1 AS SELECT * FROM db2.t2;
Vous pouvez utiliser le sqlite3 .dump
commande de pipe la sortie de dump dans l'autre db. Il prend un argument optionnel avec le nom de la table.
db1=~/mydb1.sqlite
db2=~/mydb2.sqlite
t=t2
sqlite3 "$db2" ".dump $t" | sqlite3 "$db1"
si vous n'avez pas de tables communes dans les deux bases de données, vous pouvez laisser le nom de la table et copier toutes les tables.
si les tables sont grandes, cela peut être lent car il fera INSERTs. Si ils sont énormes, et il est vraiment trop lent, peut-être .import
serait plus rapide. Vous pouvez essayer quelque chose comme
sqlite3 "$db2" ".schema $t" | sqlite3 "$db1"
sqlite3 "$db2" "SELECT * FROM $t" | sqlite3 "$db1" ".import /dev/stdin $t"