Comment puis-je fusionner plusieurs bases de données SQLite?

Si j’ai un grand nombre de bases de données SQLite, toutes avec le même schéma, quelle est la meilleure façon de les fusionner pour effectuer une requête sur toutes les bases de données?

Je sais qu’il est possible d’utiliser ATTACH pour cela, mais il y a une limite de 32 et 64 bases de données en fonction du système de mémoire de la machine.

Pour résumer le post de Nabble dans la réponse de DavidM:

attach 'c:\test\b.db3' as toMerge; BEGIN; insert into AuditRecords select * from toMerge.AuditRecords; COMMIT; detach toMerge; 

Répétez si nécessaire.

Remarque: ajout de detach toMerge; selon le commentaire de Mike.

Cela se ferait à la demande, possible plusieurs fois par jour. La façon dont je le verrais fonctionner est comme dans http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html où les bases de données sont fusionnées dans une grande firebase database, la requête effectuée puis la grande firebase database supprimée.

Si vous n’avez besoin de faire cette opération qu’une seule fois (pour créer une nouvelle firebase database plus grande), vous pouvez créer un script / programme qui mettra en boucle toutes vos bases de données sqlite, puis insérera les données dans votre firebase database principale.

Sans vouloir offenser un développeur comme un autre, je crains que votre idée ne paraisse terriblement inefficace. Il me semble qu’au lieu d’unifier les bases de données SQLite, vous devriez probablement stocker plusieurs tables dans le même fichier de firebase database.

Cependant, si je me trompe, je suppose que vous pouvez ATTACHER les bases de données, puis utiliser une vue pour simplifier vos requêtes. Ou créez une table en mémoire et copiez toutes les données (mais c’est encore pire en termes de performances, surtout si vous avez de grandes bases de données)