2012-12-05 14 views
33

Jak mogę zaimportować duży (14 GB) plik zrzutu MySQL do nowej bazy danych MySQL?Jak mogę zaimportować duży (14 GB) plik zrzutu MySQL do nowej bazy danych MySQL?

+0

Co się dzieje, kiedy próbujesz to robić? Co próbowałeś i jakie uzyskałeś rezultaty? –

+1

Próbowałem go w phpmyadmin lokalnie, mam albo zawieszony na moim komputerze, albo ograniczony czas. Próbowałem go zmieniając czas wykonania, co też nie pomogło. Możesz dać mi pomysł w php lub C lub dowolnym oprogramowaniu innej firmy, aby rozbić cały zrzut na małe kawałki. –

+0

Chłopaki, czy mógłbyś oznaczyć moją odpowiedź jako zaakceptowaną? Dzięki! –

Odpowiedz

19

Czy próbowałeś już użyć klienta wiersza poleceń mysql bezpośrednio?

mysql -u username -p -h hostname databasename < dump.sql 

Jeśli nie można tego zrobić, istnieją dowolną liczbę narzędzi można znaleźć poprzez Googling które pomagają importowania dużego zrzutu do MySQL, jak BigDump

+0

Dziękuję @ Brian, podążę za Twoimi pomysłami i powiadomię Cię później. –

+1

+1 dla BigDump, ponieważ eliminuje większość kłopotów podczas importowania dużych baz danych. –

+0

Komenda mysql w terminalu służy do importowania bazy danych .. ale jej nie optymalizuje ... –

105

Rozglądałem się dookoła, a tylko to rozwiązanie pomogło mi:

mysql -u root -p 

set global net_buffer_length=1000000; --Set network buffer length to a large byte number 

set global max_allowed_packet=1000000000; --Set maximum allowed packet size to a large byte number 

SET foreign_key_checks = 0; --Disable foreign key checking to avoid delays,errors and unwanted behaviour 

source file.sql --Import your sql dump file 

SET foreign_key_checks = 1; --Remember to enable foreign key checks when procedure is complete! 

Odpowiedź została znaleziona here.

+4

Sir Przeszukałem Internet przez ponad 7 godzin, dopóki nie znalazłem tego, co w końcu działało. Uratowałeś mi życie ! – victory

+0

Wspaniale jest usłyszeć, że to ci pomogło! –

+3

Nad mariadb, sprawdzane są wartości maksymalne: 'set global net_buffer_length = 1048576; zestaw globalny max_allowed_packet = 1073741824; ' –

-6

Trzeba

  • Bigdump skryptu bigdump.php od pobrania
  • pliku zrzutu bazy danych stworzonej przez phpMyAdmin lub inne narzędzie, pozwala nazwać dump.sql. Możesz także użyć skompresowanych plików zrzutu GZip, nazwijmy to dump.gz.
  • Konto dostępu do bazy danych MySQL
  • Konto dostępu dla niektórych serwerów z zainstalowanym PHP. Ten serwer internetowy musi być w stanie połączyć się z bazą danych mySQL. Ta zdolność jest prawdopodobnie obecna, jeśli twój serwer internetowy i serwer mySQL pochodzą od tego samego usługodawcy internetowego.
  • Jakiś dobry edytor tekstu, jak Notepad ++, aby edytować plik konfiguracyjny.
  • Niektóre klient FTP do przesyłania plików na serwer WWW.
  • Wspólna wiedza o plikach PHP, bazy danych MySQL, phpMyAdmin, FTP i HTTP
2

jestem delegowania moje odkrycie w kilku odpowiedziach widziałem, że nie wspomniano o co wpadłem, i w zasadzie to nawet pokonałoby BigDump, więc sprawdź to:

Próbowałem załadować zrzut 500 megabajtów za pośrednictwem wiersza poleceń systemu Linux i ciągle otrzymywałem błędy "Mysql server gone away". Ustawienia w pliku my.conf nie pomogły. Co okazało się naprawić to ... Robiłem jeden wielki rozszerzoną wkładkę jak:

insert into table (fields) values (a record, a record, a record, 500 meg of data); 

Musiałem sformatować plik jako osobne wkładki tak:

insert into table (fields) values (a record); 
    insert into table (fields) values (a record); 
    insert into table (fields) values (a record); 
    Etc. 

oraz generowanie zrzut , kiedyś coś takiego i to działało jak czar:

SELECT 
     id, 
     status, 
     email 
    FROM contacts 
    INTO OUTFILE '/tmp/contacts.sql' 
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    LINES STARTING BY "INSERT INTO contacts (id,status,email) values (" 
    TERMINATED BY ');\n' 
+0

Jeśli zrobiłeś zrzut CSV, byłby załadowany niesamowicie szybciej. –

-3

przejdź do katalogu C: \ wamp64 \ alias \ phpmyadmin.conf a zmiana:

php_admin_value upload_max_filesize 128M 
php_admin_value post_max_size 128M 

do

php_admin_value upload_max_filesize 2048M 
php_admin_value post_max_size 2048M 

lub więcej :)

0

Dla Windows, używam Navicat. Umożliwia przenoszenie obiektów bazy danych z jednej bazy danych do drugiej lub do pliku sql.Docelowa baza danych może znajdować się na tym samym serwerze, co źródło lub na innym serwerze.

Navicat Online Manual for windows

3

Pierwszy typu otwarty> Wiersz poleceń

cd.. 

cd.. 

f: -- xampp installed drive 

cd xampp/mysql/bin 

mysql -u root -p 

set global net_buffer_length=1000000; --Set network buffer length to a large byte number 

set global max_allowed_packet=1000000000; --Set maximum allowed packet size to a large byte number 

SET foreign_key_checks = 0; --Disable foreign key checking to avoid delays,errors and unwanted behaviour 

use DATABASE_NAME; 

source G:\file.sql; --Import your sql dump file 

SET foreign_key_checks = 1; --Remember to enable foreign key checks when procedure is complete! 
-2

według mysql dokumentacji żadna z tych prac! Ludzie zwracają uwagę! więc będziemy przesyłać test.sql w rodzaju test_db to pod powłoki:

mysql --user = nazwa_użytkownika --password = Yourpassword test_db < d: /test.sql

Działa to na pewno!

Dzięki.

0

Zastosowanie źródło poleceń importować duże DB

mysql -u username -p 

> source sqldbfile.sql 

to może importować żadnych dużych DB