una tabla solo restaurar datos mysql mysqldump

restaurar - mysqldump toda la estructura pero solo datos de tablas seleccionadas en un solo comando



mysqldump solo datos (5)

Mi base de datos tiene 3 tablas: tabla1, tabla2 y tabla3

Me gustaría hacer un mysqldump en esta base de datos con las siguientes condiciones:

  • Volcado de estructura para todas las mesas.
  • Solo volcar datos para tabla1 y tabla2, ignorar datos en tabla3

Actualmente, hago esto con 2 declaraciones de mysqldump.

mysqldump -u user -p -d db > db_structure.sql mysqldump -u user -p db --ignore-table=db.table3 > table1_and_table2_data.sql

Importarlos en el mismo orden en que fueron volcados (estructura, luego datos de tabla1 y tabla2)

¿Hay alguna manera de combinar esto en un solo comando mysqldump?


Dado que es posible que desee canalizar la salida a otro comando, como lo hice, en lugar de simplemente redirigir a un archivo y anexar a ese archivo en el próximo comando, puede intentar (modificado a partir del ejemplo de stask):

(mysqldump -u $1 -p$2 -d db && mysqldump -u $1 -p$2 db --ignore-table=db.table3) |/ your_command

... en mi caso:

(mysqldump -u $1 -p$2 -d db && mysqldump -u $1 -p$2 db --ignore-table=db.table3) |/ gzip -9 > filename.sql.gz

Al incluir los dos comandos mysqldump entre paréntesis, se crea una subshell cuya salida canalizamos a gzip y luego la redirigimos a un archivo.

PD: tampoco he podido combinarlo en una sola invocación mysqldump.


En realidad es bastante simple, use las cláusulas de "where" en las tablas en las que no desea datos y dale una condición siempre falsa. Por ejemplo, cargue datos en foo y gah y solo el esquema en la barra:

mysqldump -u ... -p... myDatabase foo bar --where=''1=2'' gah > myfile.sql

Así que sí, puedes hacer esto en una línea.


No creo que puedas hacerlo en un solo comando. Pero definitivamente puede fusionar la salida a un archivo. ¿Por qué no envolverlo en algún script de shell que haga lo siguiente?

mysqldump -u $1 -p$2 -d db > dump.sql && mysqldump -u $1 -p$2 db --ignore-table=db.table3 >> dump.sql

Ejecutará este script con dos parámetros: nombre de usuario y contraseña.


No puede combinarlos en un solo comando, pero puede ejecutar ambos comandos al mismo tiempo y enviarlos al mismo archivo.

mysqldump -u user -p --no-data db > structure.sql; mysqldump -u user -p db table1 table2 >> structure.sql

para evitar tener que ingresar la contraseña dos veces, puede hacer -ppassword (¡note la falta de espacio!). También use --no-data en el primer comando o terminará con los datos también. -d no es necesario cuando estás haciendo solo una base de datos.


Puede eliminar la parte INSERT INTO ...

mysqldump / --opt / -u ${DB_USER} -p${DB_PASS} / ${DB_NAME} / | grep -v ''INSERT INTO `table3`'' / | grep -v ''INSERT INTO `table4`''