Saltar al contenido

mysqldump no exporta todas las filas o mysql no importa

Encontramos el arreglo a este inconveniente, o por lo menos eso pensamos. Si tienes inquietudes coméntalo y con gusto te ayudaremos

Solución:

A veces, esto puede ocurrir debido a una combinación de una determinada secuencia de caracteres y el juego de caracteres del cliente MySQL en el momento de la importación.

Podría haber atrapado tales errores sin herramientas adicionales haciendo lo siguiente

mysql -u dbuser -p -f -D thedb < importfile.sql 2>errors_encountered.txt

Esto habría registrado sus puntos problemáticos en errors_encountered.txt

¿Qué se podría haber hecho con mysqldump para empezar?

SIMPLIFICAR LOS CONTENIDOS DE EXPORTACIÓN

Podría haber usado las opciones –hex-blob para convertir los caracteres en una representación hexadecimal. Esto podría haber aliviado cualquier mala interpretación o malentendido del conjunto de caracteres por parte del programa cliente MySQL.

VACIAR UNA FILA A LA VEZ

Incluso cuando se usa –force para el cliente MySQL, esto puede resultar en que no se inserten cientos o miles de filas. Por qué ?

De forma predeterminada, mysqldump tiene habilitado –opt. Esto establece lo siguiente

  --opt               Same as --add-drop-table, --add-locks, --create-options,
                      --quick, --extended-insert, --lock-tables, --set-charset,
                      and --disable-keys. Enabled by default, disable with
                      --skip-opt.

Observe que una de las opciones es –extended-insert. Esto hace que mysqldump configure inserciones en fragmentos de cientos o miles de filas a la vez.

Si solo una fila en una porción de filas tuvo un problema con la importación y está utilizando –force, la porción completa de filas no se inserta.

¿Cómo obtienes todas las partes buenas de un trozo? Para un mysqldump creado con –extended-insert, no hay una forma simple. ¿Qué puedes hacer cuando esto sucede? Tengo buenas noticias y malas noticias.

BUENAS NOTICIAS: Tienes que lanzar un nuevo mysqldump con --skip-extended-insert. Eso obliga a mysqldump a crear un INSERT por cada fila. De esa manera, al usar –force durante la importación, un valor no válido INSERT debido a que las circunstancias no afectarán las filas circundantes.

MALAS NOTICIAS #1 : Esto hace que el archivo mysqldump resultante sea mucho más grande.

MALAS NOTICIAS #2 : La importación del archivo mysqldump resultante lleva mucho, mucho más tiempo.

Esto es algo que recomendé. Aug 09, 2013 (¡La copia de seguridad/exportación de datos de la tabla de archivos adjuntos de MySQL 5.5 sigue fallando!)

SUGERENCIA

Para anular el problema de tamaño que esto crea, puede hacer lo siguiente

gzip el mysqldump mientras hace mysqldump

nohup mysqldump ... | gzip > importfile.sql.gz &

descomprima mysqldump y canalícelo a mysql para importarlo

gzip -d < importfile.sql.gz | mysql -u dbuser -p -f -D thedb

DARLE UNA OPORTUNIDAD !!!

Comentarios y puntuaciones

Si estás contento con lo expuesto, puedes dejar una reseña acerca de qué te ha parecido este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *