2008-09-17 11 views
53

Jeśli mam dużą liczbę baz danych SQLite, wszystkie z tym samym schematem, jaki jest najlepszy sposób ich scalenia w celu wykonania zapytania we wszystkich bazach danych?Jak mogę scalić wiele baz danych SQLite?

Wiem, że można to zrobić, korzystając z ATTACH, ale ma on 322 bazy danych w zależności od systemu pamięci na komputerze, a limit.

Odpowiedz

2

Jeśli wystarczy wykonać tę operację scalania tylko raz (w celu utworzenia nowej większej bazy danych), można utworzyć skrypt/program, który zapętli wszystkie bazy danych SQLite, a następnie wstawi dane do głównej (dużej) bazy danych.

0

Bez urazy, jak jednego programisty dla drugiego, obawiam się, że twój pomysł wydaje się strasznie nieefektywny. Wydaje mi się, że zamiast jednoczenia baz danych SQLite prawdopodobnie powinno się przechowywać kilka tabel w tym samym pliku bazy danych.

Jednak jeśli się pomyliłem, prawdopodobnie można ZAINSTALOWAĆ bazy danych, a następnie użyć WIDOKU, aby uprościć zapytania. Albo stwórz tabelę w pamięci i skopiuj wszystkie dane (ale to jest jeszcze gorsze pod względem wydajności, szczególnie jeśli masz duże bazy danych).

+0

Scalenie dwóch baz danych jest przydatne, gdy inżynier bazy danych pracuje z inną kopią, w celu modyfikacji struktury lub zawartości w określony sposób, a tymczasem starsza wersja na żywo jest modyfikowana przez użytkowników. – Beejor

4

Możesz również użyć oprogramowania do porównywania/scalania, aby wykonać zadanie. Możesz spróbować SQLite Compare, obsługuje porównywanie i łączenie dużych tabel SQLite między innymi.

Powodzenia

Liron

+0

http://download.cnet.com/3001-10254_4-10964767.html?spi=5484e22b6319e24014aac6ce19f95e93 – JustCurious

50

Podsumowując z Nabble post w odpowiedzi DavidM za:

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

Powtórzyć w razie potrzeby.

Uwaga: dodano detach toMerge; zgodnie z komentarzem Mike'a.

+5

, a także "Odłącz doMerge;" * po * zatwierdzeniu. – mike

+2

To tylko połączenie jednej tabeli, jak przypuszczam. W jaki sposób zaimportowałbyś wiele tabel naraz, zachowując swój klucz obcy? – ILoveCoding

+0

Próbowałem tego, ale kolumny z dołączonego db, gdzie źle ustawione z jakiegoś powodu, a wynik był błędny. Dlatego musiałem wyraźnie podać nazwy kolumn w tej samej kolejności w instrukcjach INSERT i SELECT. –