Copier des données d’une firebase database SQLite vers une autre

J’ai 2 bases de données SQLite avec des données communes mais avec des objectives différents 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 firebase database à une autre?

Vous devrez connecter Database X avec Database Y à l’aide de la commande ATTACH , puis exécuter les commandes Insert Into appropriées pour les tables que vous souhaitez transférer.

INSERT INTO X.TABLE SELECT * FROM Y.TABLE; 

Ou, si les colonnes ne sont pas appariées dans l’ordre:

 INSERT INTO X.TABLE(fieldname1, fieldname2) SELECT fieldname1, fieldname2 FROM Y.TABLE; 

Prenons un exemple où j’ai deux bases de données, à savoir allmsa.db et atlanta.db. Supposons que la firebase database allmsa.db possède des tables pour tous les msa aux États-Unis et que la firebase database atlanta.db est vide.

Notre objective est de copier la table atlanta de allmsa.db à atlanta.db.

Pas

  1. sqlite3 atlanta.db (pour accéder à la firebase database atlanta)
  2. Joindre allmsa.db. Cela peut être fait en utilisant la commande ATTACH '/mnt/fastaccessDS/core/csv/allmsa.db' AS AM; notez que nous donnons l’intégralité du chemin de la firebase database à joindre.
  3. vérifiez la liste de firebase database en utilisant sqlite> .databases vous pouvez voir la sortie comme
  fichier de nom de seq                                                      
 --- --------------- -------------------------------- --------------------------
 0 main /mnt/fastaccessDS/core/csv/atlanta.db                  
 2 heures du matin /mnt/fastaccessDS/core/csv/allmsa.db 
  1. maintenant vous arrivez à votre cible réelle. Utilisez la commande INSERT INTO atlanta SELECT * FROM AM.atlanta;

Cela devrait servir votre objective.

Manière la plus simple et correcte sur une seule ligne:

 sqlite3 old.db ".dump mytable" | sqlite3 new.db 

La clé primaire et les types de colonnes seront conservés.

Pour une action unique, vous pouvez utiliser .dump et .read.

Vider la table my_table de old_db.sqlite

 c:\sqlite>sqlite3.exe old_db.sqlite sqlite> .output mytable_dump.sql sqlite> .dump my_table sqlite> .quit 

Lire le dump dans le new_db.sqlite en supposant que la table n’existe pas

 c:\sqlite>sqlite3.exe new_db.sqlite sqlite> .read mytable_dump.sql 

Maintenant, vous avez cloné votre table. Pour ce faire pour toute la firebase database, omettez simplement le nom de la table dans la commande .dump.

Bonus: Les bases de données peuvent avoir différents encodages.

Code Objective-C pour copier la table d’une firebase database vers une autre firebase database

 -(void) createCopyDatabase{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); NSSsortingng *documentsDir = [paths objectAtIndex:0]; NSSsortingng *maindbPath = [documentsDir ssortingngByAppendingPathComponent:@"User.sqlite"];; NSSsortingng *newdbPath = [documentsDir ssortingngByAppendingPathComponent:@"User_copy.sqlite"]; NSFileManager *fileManager = [NSFileManager defaultManager]; char *error; if ([fileManager fileExistsAtPath:newdbPath]) { [fileManager removeItemAtPath:newdbPath error:nil]; } sqlite3 *database; //open database if (sqlite3_open([newdbPath UTF8Ssortingng], &database)!=SQLITE_OK) { NSLog(@"Error to open database"); } NSSsortingng *attachQuery = [NSSsortingng ssortingngWithFormat:@"ATTACH DATABASE \"%@\" AS aDB",maindbPath]; sqlite3_exec(database, [attachQuery UTF8Ssortingng], NULL, NULL, &error); if (error) { NSLog(@"Error to Attach = %s",error); } //Query for copy Table NSSsortingng *sqlSsortingng = @"CREATE TABLE Info AS SELECT * FROM aDB.Info"; sqlite3_exec(database, [sqlSsortingng UTF8Ssortingng], NULL, NULL, &error); if (error) { NSLog(@"Error to copy database = %s",error); } //Query for copy Table with Where Clause sqlSsortingng = @"CREATE TABLE comments AS SELECT * FROM aDB.comments Where user_name = 'XYZ'"; sqlite3_exec(database, [sqlSsortingng UTF8Ssortingng], NULL, NULL, &error); if (error) { NSLog(@"Error to copy database = %s",error); } } 

J’avais besoin de déplacer les données d’une firebase database compacte sql server vers sqlite. En utilisant sql server 2008, vous pouvez cliquer avec le bouton droit de la souris sur la table et sélectionner «Script Table To» puis «Data to Inserts». Copiez les instructions d’insertion supprimez les instructions ‘GO’ et exécutées avec succès lorsqu’elles sont appliquées à la firebase database sqlite à l’aide de l’application ‘DB Browser for Sqlite’.