Przyspieszenie importu dużego pliku SQL

0

Panowie mam problem do rozwiązania. Posiadam sporą bazę zawierającą dziesiątki tysięcy rekordów, gdzie każdy rekord w pliku SQL ma formę
INSERT INTO ..VALUES();
zamiast szybszej
INSERT INTO ... VALUES(...),(...),(...)(...)...;

Efekt jest taki że baza wrzucana na serwer poprzez polecenie mysql -h ..... -u -p < PLIK.SQL ładuje się kilkanaście minut. Gdybym mógł to korzystał bym z 2 wersji zapisu która jest o niebo szybsza bo nie wykonuje dziesiątek tysięcy kwerend tylko jedną.

Pytanie co można zrobić np. w ustawieniach serwera, lub jakich poleceń/parametrów użyć by ten proces znacznie przyspieszyć ?

1

Możesz np w takim notepad++ uzyć funkcji znajdź i zamień? No chyba, że masz tam różne tabele, wtedy byś musiał to pewnie zrobić jakoś ręcznie.
Możesz użyć jeszcze tego:

set unique_checks=0; 
set foreign_key_checks=0; 
set autocommit=0; 

Napisz jeszcze ile gb zajmuje ten plik.

0

Plik ma dosłownie 20MB i nie to jest ograniczeniem tylko właśnie liczba zapytań "INSERT INTO". Przerabiałem temat z fizyczną konwersją tekstu ale z pewnych powodów mi nie odpowiada. To że mam tyle zapytań jest rezultatem korzystania z konwertera DBF do SQL. Finalny SQL zawiera wiele tabel, każda w dużą ilością rekordów i stosunkowo niewielką ilością danych na pojedynczy rekord.

0

Dobra załatwione :)

SET autocommit=0; załatwia sprawę - import teraz trwa kilka sekund zamiast 10 minut

"When importing data into InnoDB, turn off autocommit mode, because it performs a log flush to disk for every insert. To disable autocommit during your import operation, surround it with SET autocommit and COMMIT statements"

Dzięki axelbest

1 użytkowników online, w tym zalogowanych: 0, gości: 1