Mam skrypt php, który analizuje pliki XML i tworzy duży plik SQL, który wygląda mniej więcej tak:Jak importować duże pliki sql do tabeli mysql
INSERT IGNORE INTO table(field1,field2,field3...)
VALUES ("value1","value2",int1...),
("value1","value2",int1)...etc
Plik ten sumuje się ponad 20GB (I testowałem na pliku 2,5 GB, ale też się nie udało).
Próbowałem polecenia jak: korzeń
mysql -u -p table_name < /var/www/bigfile.sql
to działa na mniejsze pliki, powiedzmy około 50MB. ale nie działa z większym plikiem.
Próbowałem:
mysql> source /var/www/bigfile.sql
Próbowałem też mysqlimport jednak, że nie będzie nawet prawidłowo przetwarzać mój plik.
Ciągle otrzymuję błąd, który mówi
ERROR 2006 (HY000): MySQL server has gone away
Happens ok. 30 sekund po rozpoczęciu wykonywania.
Ustawiłem allow_max_packet na 4GB, ale podczas weryfikacji z SHOW VARIABLES pokazuje tylko 1GB.
Czy można to zrobić bez marnowania kolejnych 10 godzin?
dlaczego nie myślę o tym ... – nick
po prostu zaimportowane 2,5 gb w około 5 minut. dzieki za sugestie! – nick
Zobacz także ustawienie 'max_allowed_packet = 16M' w my.cnf - ustawienie go na coś bardzo dużego jak 16M pozwoli na większe pojedyncze wstawki –