Como posso mesclar muitos bancos de dados SQLite?

Se eu tiver um grande número de bancos de dados SQLite, todos com o mesmo esquema, qual é a melhor maneira de mesclá-los para executar uma consulta em todos os bancos de dados?

Eu sei que é possível usar o ATTACH para fazer isso, mas ele tem um limite de 32 e 64 bancos de dados, dependendo do sistema de memory da máquina.

Para resumir do post Nabble na resposta de DavidM:

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

Repita conforme necessário.

Nota: adicionado detach toMerge; como por comentário de Mike.

Isso seria feito sob demanda, possível várias vezes ao dia. A maneira como eu a veria funcionando é como em http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html onde os bancos de dados são mesclados em um grande database, a consulta realizada e, em seguida, o database grande excluído.

Se você só precisa fazer essa operação de mesclagem uma vez (para criar um novo database maior), você pode criar um script / programa que faça o loop de todos os seus bancos de dados sqlite e insira os dados em seu database principal.

Sem ofensa, da mesma forma que um desenvolvedor para outro, temo que sua ideia pareça terrivelmente ineficiente. Parece-me que, em vez de unir bancos de dados SQLite, você provavelmente deveria estar armazenando várias tabelas dentro do mesmo arquivo de database.

No entanto, se eu estiver enganado, acho que você poderia append os bancos de dados e, em seguida, usar um VIEW para simplificar suas consultas. Ou crie uma tabela na memory e copie todos os dados (mas isso é ainda pior desempenho, especialmente se você tiver grandes bancos de dados)