2012-02-18 10 views
6

Ho uno script PHP che analizza i file XML e crea un file di grandi dimensioni SQL che sembra qualcosa di simile:Come importare i file SQL di grandi dimensioni in tabella mysql

INSERT IGNORE INTO table(field1,field2,field3...) 
VALUES ("value1","value2",int1...), 
("value1","value2",int1)...etc 

Questo file aggiunge fino a oltre 20 GB (I ho testato su un file da 2,5 GB ma fallisce anche).

Ho provato comandi come: radice

mysql -u -p nome_tabella < /var/www/bigfile.sql

questo funziona su file più piccoli, dico intorno 50MB. ma non funziona con un file più grande.

ho provato:

mysql> source /var/www/bigfile.sql 

Ho anche provato mysqlimport, ma che non sarà nemmeno correttamente elaborare il mio file.

Continuo a ricevere un errore che dice

ERROR 2006 (HY000): MySQL server has gone away 

Happens circa. 30 secondi dopo l'inizio dell'esecuzione.

Ho impostato allowed_max_packet su 4 GB, ma quando lo si verifica con SHOW VARIABLES mostra solo 1 GB.

C'è un modo per farlo senza sprecare altre 10 ore?

risposta

2

Provare a dividere il file in più query INSERT.

+0

perché non ho pensato che ... – nick

+0

appena importato 2.5 gb in circa 5 minuti. grazie per il suggerimento! – nick

+0

Dai anche un'occhiata all'impostazione 'max_allowed_packet = 16M' in my.cnf - impostandola su qualcosa di molto grande come 16M consentirà i singoli singoli più grandi –

Problemi correlati