Pergunta

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

Eu sei que é possível usar ANEXAR para fazer isso, mas ele tem um limite de 32 e 64 bancos de dados, dependendo do sistema de memória na máquina.

Foi útil?

Solução 2

Isso poderia ser feito sob demanda, possíveis várias vezes ao dia.A maneira que eu iria vê-lo trabalhar é como no http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html onde os bancos de dados são mesclados em um banco de dados, a consulta é executada e, em seguida, o grande banco de dados excluídos.

Outras dicas

Para resumir, a partir do Nabble post em DavidM a resposta:

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 mike comentário.

Se você só precisa de fazer esta operação de mesclagem de uma vez (para criar um novo e maior banco de dados), você pode criar um script/programa que irá repetir todos os seus bancos de dados sqlite e, em seguida, inserir os dados no seu main (grande) de banco de dados.

Apesar de uma muito antiga linha, esta é ainda uma questão relevante nos dias de hoje as necessidades da programação.Estou postando isso aqui porque nenhuma das respostas fornecidas ainda é conciso, fácil e direto ao ponto.Isso é por causa de Googlers que acabam nesta página.GUI vamos lá:

  1. Download Sqlitestudio
  2. Adicione todos os seus arquivos de banco de dados usando o Ctrl + O atalho de teclado
  3. Faça duplo clique em cada agora-carregado arquivo de banco de dados para abrir/activate/expandir tudo
  4. Parte divertida:simplesmente clique com o botão direito do rato em cada uma das tabelas e clique em Copy, e , em seguida, ir para o banco de dados de destino na lista do carregado arquivos de banco de dados (ou criar uma nova, se necessário) e clique com o botão direito do mouse no destino de banco de dados e clique em Paste

Fiquei impressionado ao perceber que uma tarefa tão assustadora pode ser resolvido usando a antiga habilidade de programação chamado:copiar-e-colar :)

Sem ofensa, apenas como um desenvolvedor de outra, eu estou com medo de que sua idéia parece terrivelmente ineficiente.Parece-me que, em vez de unir bancos de dados SQLite, você provavelmente deve ser o armazenamento de várias tabelas dentro do mesmo arquivo de Banco de dados.

No entanto, se eu estou enganado acho que você poderia ANEXAR os bancos de dados e, em seguida, usar um modo de EXIBIÇÃO para simplificar as consultas.Ou fazer uma tabela na memória e copiar todos os dados (mas que é ainda pior desempenho sábio, especialmente se você tiver grandes bases de dados)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top