solo datos de mysqldump

Respuestas:

553
mysqldump --no-create-info ...

También puedes usar:

  • --skip-triggers: si está utilizando desencadenantes
  • --no-create-db: si está utilizando la --databases ...opción
  • --compact: si quieres deshacerte de los comentarios adicionales
matei
fuente
47
Aquí está el cmd completo para los pasteles de copiamysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678'
Yzmir Ramirez
2
Si lo consigues Access denied for user ... to database '...' when doing LOCK TABLES, usa--single-transaction
Rolf
@YzmirRamirez gracias pero para tu información en Windows tuve que usar comillas dobles --where. Por ejemplo,--where="id=2"
Kip
Este fue un ahorrador brillante para mí. Gracias.
Ken Ingram
149

Esto debería funcionar:

# To export to file (data only)
mysqldump -u [user] -p[pass] --no-create-info mydb > mydb.sql

# To export to file (structure only)
mysqldump -u [user] -p[pass] --no-data mydb > mydb.sql

# To import to database
mysql -u [user] -p[pass] mydb < mydb.sql

NOTA: no hay espacio entre -p&[pass]

Ish
fuente
12
--no-create-dbes redundante cuando se usa--no-create-info
James McMahon
44
Un espacio después -pestá bien
Gracias
12
En general, es mejor usar -p sin proporcionar la contraseña para que la contraseña no se almacene en su historial de bash (se le pedirá que ingrese la contraseña después de ejecutar el comando).
Dan
2
Además del consejo de @ Dan, también hace que la contraseña sea visible para cualquier usuario que pueda enumerar los procesos actuales ( ps -ef)
TMG
1
Dejar la contraseña después de que la -popción mysqldumpsolicite la contraseña.
Melle
22
 >> man -k  mysqldump [enter in the terminal]

encontrarás la siguiente explicación

--no-create-info, -t

No escriba sentencias CREATE TABLE que vuelvan a crear cada tabla volcada. Nota: Esta opción no excluye las declaraciones que crean grupos de archivos de registro o espacios de tabla de la salida de mysqldump; sin embargo, puede usar la opción --no-tablespaces para este propósito.

--no-data, -d

No escriba ninguna información de la fila de la tabla (es decir, no volcar el contenido de la tabla). Esto es útil si desea volcar solo la instrucción CREATE TABLE para la tabla (por ejemplo, para crear una copia vacía de la tabla cargando el archivo de volcado).

# To export to file (data only)
mysqldump -t -u [user] -p[pass] -t mydb > mydb_data.sql

# To export to file (structure only)
mysqldump -d -u [user] -p[pass] -d mydb > mydb_structure.sql
Angelin Nadar
fuente
3
¿Hay alguna razón para usar dos veces la opción '-t' y '-d'?
erwan
19

Si solo desea las consultas INSERT, use lo siguiente:

mysqldump --skip-triggers --compact --no-create-info

Jonathan
fuente
gracias por lo --compactque se deshace de las declaraciones de comentarios adicionales
chiliNUT
2

Sugeriría usar el siguiente fragmento. Funciona bien incluso con tablas enormes (de lo contrario, abriría el volcado en el editor y eliminaría las cosas innecesarias, ¿verdad?;)

mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql

Al menos se requiere mysql 5.x , pero quién ejecuta cosas viejas hoy en día .. :)

wuzer
fuente
Me encontré con una situación recientemente, donde tuve que conectarme a un sistema que estaba usando 4.x en producción. Tenían espacios en los nombres de tabla y columna, y en mi opinión, básicamente estaban haciendo todo mal.
Elkvis
0

Intenta volcar en un archivo delimitado.

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,
ed209
fuente
0

Al intentar exportar datos con la respuesta aceptada, recibí un error:

ERROR 1235 (42000) at line 3367: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

Como se ha mencionado más arriba:

mysqldump --no-create-info

Exportará los datos pero también exportará las declaraciones de activación de creación. Si, como yo, su estructura de base de datos de salida (que también incluye disparadores) con un comando y luego usa el comando anterior para obtener los datos, también debe usar '--skip-triggers'.

Entonces, si quieres SOLO los datos:

mysqldump --no-create-info --skip-triggers
Ben Waine
fuente