2012-02-18 16 views
6

Tengo un script PHP que analiza los archivos XML y crea un archivo SQL de gran tamaño que se ve algo como esto:Cómo importar archivos SQL de gran tamaño en la tabla de MySQL

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

Este archivo se suma a ser mayor de 20 GB (I probado en un archivo de 2.5GB pero también falla).

He tratado de comandos como: root

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

esto funciona en archivos más pequeños, es decir, aproximadamente 50 MB. pero no funciona con un archivo más grande.

me trataron:

mysql> source /var/www/bigfile.sql 

También probé mysqlimport pero eso no va a procesar adecuadamente incluso mi archivo.

Me aparece un error que dice

ERROR 2006 (HY000): MySQL server has gone away 

sucede aprox. 30 segundos después de que empiece a ejecutar.

Establecí allowed_max_packet a 4GB pero al verificarlo con SHOW VARIABLES solo muestra 1GB.

¿Hay alguna manera de hacerlo sin perder otras 10 horas?

Respuesta

2

Intente dividir el archivo en varias consultas INSERTAR.

+0

por qué no pienso en eso ... – nick

+0

acaba de importar 2.5gb en aproximadamente 5 minutos. ¡Gracias por la sugerencia! – nick

+0

También eche un vistazo a la configuración de 'max_allowed_packet = 16M' en my.cnf - configurándola en algo muy grande como 16M permitirá insertos más grandes –

Cuestiones relacionadas