2009-05-21 18 views
8

Jak wstawić na przykład 100 000 wierszy do tabeli MySQL za pomocą pojedynczego zapytania?Jak wstawić dużą liczbę wierszy w MySQL?

+0

Oczywistym pytaniem jest "z czego?". Jeśli odpowiedź pochodzi z pamięci, zacznij bardzo ostrożnie pisać plik SQL. W przeciwnym razie użyj odpowiedniego języka i środowiska. –

Odpowiedz

-1

Nie możesz, o ile wiem. Będziesz potrzebował pętli.

3

Możesz zrobić wsadowy wsad z instrukcją INSERT, ale zapytanie nie może być większe niż (nieco mniej niż) max_allowed_packet.

Dla 100 tys. Wierszy, w zależności od wielkości wierszy, prawdopodobnie przekroczycie to.

Jednym ze sposobów byłoby podzielenie go na kilka części. To i tak chyba dobry pomysł.

Alternatywnie można użyć LOAD DATA INFILE (lub LOAD DATA LOILAL DATA LOILAL), aby załadować z pliku rozdzielanego tabulatorami (lub innymi ograniczeniami). Zobacz dokumentację, by poznać szczegóły.

DANE OBCIĄŻENIA nie podlegają limitowi max_allowed_packet.

7
insert into $table values (1, a, b), (2, c, d), (3, e, f); 

Spowoduje to wstawienie 3 rzędów. Kontynuuj w razie potrzeby, aby osiągnąć 100 000. Robię bloki ~ 1000 w ten sposób podczas pracy ETL.

Jeśli twoje dane są statycznie zapisane w pliku, przekształcenie go i użycie będzie najlepszą metodą ładowania danych, infolinia, ale zgaduję, że pytasz o to, ponieważ robisz coś podobnego.

Należy również zauważyć, co ktoś inny powiedział o rozmiarze max_allowed_packet, ograniczając długość zapytania.

0

Spróbuj użyć LoadFile() lub Konwertuj Yor Data na plik XML, a następnie użyj funkcji Load and Extract(), aby załadować dane do bazy danych MySQL.

To jedno zapytanie i najszybszym rozwiązaniem,

Nawet ja robię to samo, miałem 1,5 GB plików jeśli wokół miliony wierszy. Użyłem Obie opcji w moim przypadku.

Powiązane problemy