MySQL - Estructura de salida para MySQLDump

 
Vista:
Imágen de perfil de Ebel Rodriguez

Estructura de salida para MySQLDump

Publicado por Ebel Rodriguez (5 intervenciones) el 22/03/2016 23:55:24
Amigos;

Estoy desarrollando un Script en PHP para hacer resguardo (DUMP) de una base de datos (en especifico de tablas). He echo varias pruebas y he obtenido el resultado deseado, PERO, no logro que se presente como si lo hiciera directamente del PHPAdmin.

Inclusive, me gustaría ver cuál es el Script que se genera con las opciones del DUMP utilizando el PHPAdmin.

En el DUMP del PHPAdmin logro obtener la siguiente salida de datos (INSERT) de la siguiente manera:

--
-- Volcado de datos para la tabla `cities`
--

INSERT INTO `cities` (`city`, `state_code`) VALUES
('Adak', 'AK'),
('Akiachak', 'AK'),
('Akiak', 'AK'),
('Akutan', 'AK'),
('Alakanuk', 'AK'),
('Aleknagik', 'AK'),
('Allakaket', 'AK');


-- SALE EN MULTIPLES LINEAS--


Si lo hago directamente obtengo lo siguiente:

--
-- Volcado de datos para la tabla `cities`
--

INSERT INTO `cities` (`city`, `state_code`) VALUES ('Adak', 'AK'), ('Akiachak', 'AK'), ('Akiak', 'AK'), ('Akutan', 'AK'), ('Alakanuk', 'AK'), ('Aleknagik', 'AK'), ('Allakaket', 'AK');


-- SALE TODO EN UNA SOLA LINEA --


Me preocupa la generación de un DUMP de la BD en la cual se obtienen miles de registros (con imágenes integradas), y que estas salgan en una sola línea.


¿Que instrucción u opción debo registrar en el comando de MYSQLDUMP para que su salida sea como la obtenida a través del PHPAdmin?

Espero que alguno de ustedes me ilumine como puedo hacer lo deseado.

Respetuosamente,


Ebel Rodriguez
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Estructura de salida para MySQLDump

Publicado por xve (1151 intervenciones) el 23/03/2016 08:43:30
Hola Ebel, a mi modo de ver, la manera correcta es la que te genera la instrucción mysqldump, ya que ese tipo de archivo, no es para revisar... en el momento que tengas muchos registros, ese archivo puede ocupar mucho espacio, por lo que su revisión es casi imposible, por lo que cuanto menos ocupe mejor...

Si lo quieres hacer como phpmyadmin, la única manera que se me ocurre es que lo hagas manualmente, es decir, generar tu las instrucciones de inserción.

Espero que te sirva de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Estructura de salida para MySQLDump

Publicado por Gonzalo (103 intervenciones) el 23/03/2016 11:42:34
@Ebel:
Un INSERT de ese tipo es lo que se denomina "Insert masivo", y se usa para optimizar la inserción de los datos en la base, ya que se procesan todos los registros en un sólo subproceso. Por eso mysqldump lo genera por default de ese modo.
Cuando haces inserciones hay un tiempo que tu no ves, el overhead de cambio de contexto que se produce entre que el sistema lee un bloque de datos a ejecutar en disco, lo envía al buffer, deja de leer, lo envía a memoria, mysql lo ejecuta (que implica cambiar a disco de nuevo) levanta las restricciones de la tabla, procesa, devuelve el resultado de la operación, vacía su buffer y retorna el control para una nueva lectura (me estoy dejando muchas etapas intermedias).
Todo eso se produce en microsegundos, en apenas algunos ciclos de microprocesador.
Si lo haces en forma masiva, toda la lectura es en un solo ciclo, pero si haces inserts independientes cada uno de los insert consumirá un bloque entero de cambios de contexto y subprocesamiento, con lo que se irá acumulando timeout mientras los datos se restauran.
Si el conjunto de datos es reducido (menor a algunas decenas de miles de registros), es probable que no se note. Pero cuando estás hablando de cantidades realmente grandes de registros, el overhead puede hacer que tu proceso caiga en timeout y se corte, dejando la base inconsistente en datos.

¿Se entiende?

En resumen: Usa el backup tal como lo genera mysqldump. Solamente asegúrate de poner un buffer lo suficientemente amplio como para que procese rápido (ver manual de referencia on-line, configuración y optimizacion del server).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar