J'ai 2 bases de données SQLite avec des données communes mais avec des finalités différentes et je voulais éviter de réinsérer des données, alors je me demandais s'il était possible de copier une table entière d'une base de données à une autre?
141
Prenons un exemple où j'ai deux bases de données à savoir allmsa.db et atlanta.db. Supposons que la base de données allmsa.db contient des tables pour tous les msas aux États-Unis et que la base de données atlanta.db est vide.
Notre objectif est de copier la table atlanta de allmsa.db vers atlanta.db.
Pas
ATTACH '/mnt/fastaccessDS/core/csv/allmsa.db' AS AM;
notez que nous donnons le chemin complet de la base de données à attacher.sqlite> .databases
vous pouvez voir la sortie commeINSERT INTO atlanta SELECT * FROM AM.atlanta;
Cela devrait servir votre objectif.
la source
Manière la plus simple et correcte sur une seule ligne:
La clé primaire et les types de colonnes seront conservés.
la source
.dump
crée la commandeCREATE TABLE IF NOT EXISTS ...
, et il n'y a aucune erreur même si ma table de destination existe.Pour une action ponctuelle, vous pouvez utiliser .dump et .read.
Vider la table my_table de old_db.sqlite
Lisez le vidage dans le fichier new_db.sqlite en supposant que la table n'existe pas
Vous avez maintenant cloné votre table. Pour ce faire pour toute la base de données, omettez simplement le nom de la table dans la commande .dump.
Bonus: les bases de données peuvent avoir différents encodages.
la source
Code Objective-C pour copier une table d'une base de données vers une autre base de données
la source
J'avais besoin de déplacer des données d'une base de données compacte de serveur sql vers sqlite, donc en utilisant sql server 2008, vous pouvez faire un clic droit sur la table et sélectionner «Script Table To» puis «Data to Inserts». Copiez les instructions d'insertion supprimez les instructions 'GO' et elles ont été exécutées avec succès lorsqu'elles sont appliquées à la base de données sqlite à l'aide de l'application 'DB Browser for Sqlite'.
la source
Premier scénario: DB1.sqlite et DB2.sqlite ont la même table (t1), mais DB1 est plus «à jour» que DB2. Si elle est petite, supprimez la table de DB2 et recréez-la avec les données:
Deuxième scénario: s'il s'agit d'une grande table, vous serez peut-être mieux avec une
INSERT if not exists
solution de type. Si vous avez uneUnique Key
colonne, c'est plus simple, sinon vous devrez utiliser une combinaison de champs (peut-être tous les champs) et à un moment donné, il est encore plus rapide de simplementdrop
et de remettrecreate
la table; c'est toujours plus simple (moins de réflexion requise).LA CONFIGURATION: ouvrir SQLite sans DB qui crée une base de données
temporary
en mémoiremain
, puisattach
DB1.sqlite et DB2.sqliteet utilisez
.databases
pour voir les bases de données jointes et leurs fichiers.la source
UNIQUE
etPRIMARY KEY
, donc si vous en avez, vous devrez soitDROP TABLE
et manuellementCREATE
et /INSERT
ou utiliser la méthode.dump
et.read
mentionnée ci-dessus par @Thinkeye.