it-swarm-eu.dev

Jak mohu sloučit mnoho SQLite databází?

Pokud mám velký počet databází SQLite, všechny se stejným schématem, jaký je nejlepší způsob, jak je sloučit dohromady, aby bylo možné provést dotaz ve všech databázích? 

Vím, že je možné použít PŘIPOJIT k tomu, ale má limit 32 a 64 databází v závislosti na paměťovém systému na počítači.

56
DavidM

To by se mělo provádět na vyžádání, několikrát denně. Způsob, jakým bych to viděl pracovat, je jako v http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html kde jsou databáze sloučeny do velké databáze DB , dotaz proveden a pak odstraněna velká databáze.

16
DavidM

Shrnutí z příspěvku Nabble v odpovědi Davida:

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

Opakujte podle potřeby.

Poznámka: přidáno detach toMerge; podle komentáře mike.

59
dfrankow

Pokud potřebujete tuto operaci sloučit pouze jednou (pro vytvoření nové větší databáze), můžete vytvořit skript/program, který provede smyčku všech vašich databází sqlite a poté vloží data do vaší hlavní (velké) databáze.

1
Espo

I když je to velmi staré vlákno, v dnešních programových potřebách je to stále důležitá otázka. Vysílám to zde, protože žádná z odpovědí dosud není stručná, snadná a přímá. To je kvůli Googlu, kteří skončí na této stránce. GUI jdeme:

  1. Ke stažení Sqlitestudio
  2. Přidejte všechny soubory databáze pomocí klávesové zkratky Ctrl + O
  3. Poklepáním na každý nyní načtený soubor db otevřete/aktivujte/rozbalte všechny
  4. Zábavná část: jednoduše klikněte pravým tlačítkem myši na každou z tabulek a klikněte na Copy a pak přejděte do cílové databáze v seznamu načtených databázových souborů (nebo vytvořte novou, pokud je to nutné) a klikněte pravým tlačítkem myši na cílový db a klikněte na v Paste

Byl jsem ohromen, abych si uvědomil, že takový skličující úkol může být vyřešen pomocí starověké programovací dovednosti nazvané: copy-and-paste :)

0