2012-12-05 13 views
33

Come posso importare un file di dump MySQL di grandi dimensioni (14 GB) in un nuovo database MySQL?Come posso importare un file di dump MySQL di grandi dimensioni (14 GB) in un nuovo database MySQL?

+0

Che cosa succede quando si tenta di farlo? Che cosa hai provato e quali risultati hai ottenuto? –

+1

L'ho provato in phpmyadmin localmente, ho avuto la mia macchina bloccata o il tempo limitato eccedente. L'ho provato modificando il tempo di esecuzione, anche questo non ha aiutato. Puoi darmi l'idea in php o C o qualsiasi software di terze parti per suddividere l'intera discarica in piccoli pezzi. –

+0

Ragazzi, potresti contrassegnare la mia risposta come accettata? Grazie! –

risposta

19

Hai provato semplicemente utilizzando direttamente il client della riga di comando mysql?

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

Se non è possibile fare questo, ci sono un certo numero di utility si possono trovare da usare Google che aiuto si importa una grande discarica in MySQL, come BigDump

+0

Grazie @Brian, seguirò le tue idee e ti farò sapere dopo. –

+1

+1 per BigDump in quanto elimina la maggior parte dei problemi nell'importazione di database di grandi dimensioni. –

+0

Il comando mysql nel terminale funziona per importare il database .. ma non lo ottimizza ... –

105

Ho cercato in giro, e solo questa soluzione mi ha aiutato:

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! 

La risposta si trova here.

+4

Sir Sono stato alla ricerca su Internet per più di 7 ore fino a quando ho trovato questo che alla fine ha funzionato. Mi hai salvato la vita ! – victory

+0

È bello sapere che questo ti ha aiutato! –

+3

Oltre mariadb, i valori massimi vengono controllati: 'set global net_buffer_length = 1048576; imposta globale max_allowed_packet = 1073741824; ' –

-6

È necessario

  • Bigdump bigdump.php lo script dal download
  • file di dump del database creato da phpMyAdmin o un altro strumento, consente di chiamare dump.sql. Puoi anche usare i file di compressione compressi di GZip, chiamiamolo dump.gz.
  • Account di accesso per il database mySQL
  • Account di accesso per alcuni server Web con PHP installato. Questo server Web deve essere in grado di connettersi al database mySQL. Questa abilità è probabilmente presente se il tuo server web e il server mySQL provengono dallo stesso ISP.
  • Alcuni buoni editor di testo come Notepad ++ per modificare il file di configurazione.
  • Alcuni client FTP per caricare i file sul server web.
  • conoscenza comune sui file, PHP, database MySQL, phpMyAdmin, FTP e HTTP
2

sto postando il mio risultato in alcune delle risposte che ho visto che non ha menzionato quello che ho incontrato, e appropriatamente questo potrebbe anche sconfiggere BigDump, quindi verificarlo:

Stavo cercando di caricare un dump di 500 m tramite la riga di comando di Linux e continuavo a ricevere errori di "Mysql server andato via". Le impostazioni in my.conf non sono d'aiuto. Quello che si è rivelato per risolvere il problema è ... che stavo facendo un grande inserto estesa come:

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

avevo bisogno di formattare il file come inserti separati come questo:

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

e generare la discarica , ho usato qualcosa come questo e ha funzionato come un fascino:

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

Se avessi fatto un dump CSV, sarebbe stato caricato follemente più veloce. –

-3

passare a C: \ wamp64 \ alias \ phpmyadmin.conf e cambiamento da:

php_admin_value upload_max_filesize 128M 
php_admin_value post_max_size 128M 

a

php_admin_value upload_max_filesize 2048M 
php_admin_value post_max_size 2048M 

o più :)

0

Per Windows, io uso Navicat Premium. Permette di trasferire oggetti di database da un database all'altro o in un file sql.Il database di destinazione può trovarsi sullo stesso server dell'origine o su un altro server.

Navicat Online Manual for windows

3

Prima open> riga di comando

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

in base alla documentazione mysql nessuno di questi lavori! Le persone prestano attenzione! quindi dovremo caricare test.sql nel tipo TEST_DB questo nella shell:

mysql --user = user_name --password = yourpassword TEST_DB < d: /test.sql

Questo funziona di sicuro!

Grazie.

0

Usa fonte comando per importare grandi DB

mysql -u username -p 

> source sqldbfile.sql 

questo può importare qualsiasi grande DB

Problemi correlati