MySQL volcado por consulta


220

¿Es posible hacerlo mysqldumpsolo SQL query?

Me refiero a volcar toda la base de datos, como phpmyadmincuando exportas aSQL

Respuestas:


285

no mysqldump, sino mysql cli ...

mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase

puedes redirigirlo a un archivo si quieres:

mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt

Actualización: la publicación original le preguntó si podía volcar de la base de datos por consulta. Lo que preguntó y lo que quiso decir fue diferente. Realmente quería simplemente mysqldump todas las tablas.

mysqldump --tables myTable --where="id < 1000"

22
¿Cómo restaurar este archivo txt volcado?
Vivek S

3
para aquellos que intentan el enfoque mysql -e. Tuve que personalizar el script un poco para que funcionara para mí. Este requiere que ingrese la contraseña sql cuando se ejecuta. mysql -e "select * from table WHERE query = 'asdasd'" -u root -p --database = DBNAME> text.txt
RichardW11

13
simplemente podría crear una nueva tabla para la consulta (CREATE TABLE SELECT) y luego volcar esa tabla con mysqldump. De esa manera puede restaurarlo fácilmente más tarde.
quano

1
para quien quiera usar mysqldump y restaurar el archivo, eche un vistazo aquí: stackoverflow.com/a/2431936/411786
Syco

2
Para importar datos que se exportan con mysql -e con la opción -B para salir como delimitado por tabulaciones, ejecute mysqlimport --ignore-lines = 1 --fields-terminated-by = '\ t'. Ver: stackoverflow.com/a/17071108/1676044
Kevin Borders el

259

Esto debería funcionar

mysqldump --databases X --tables Y --where="1 limit 1000000"

44
Un mejor ejemplo podría ser algo que realmente se parezca a una cláusula where, como --where = "myColumn <1000" - el primer millón de filas de cada tabla parece una cosa extraña para solicitar;)
ijw

@ijw Si lo que quiere hacer es tomar una copia de seguridad de su tabla fácilmente reinsertable, probablemente no necesite una cláusula where para otra cosa que no sean los límites.
Thomas Ahle

3
@Sagotharan: Bueno, no es una consulta. Probablemente por eso.
Carreras de ligereza en órbita

79
!!¡¡ADVERTENCIA!! mysqldump agrega un comando 'DROP TABLE' en la parte superior del archivo exportado. Eso significa que si realiza una exportación parcial y luego la vuelve a importar, perderá todo lo demás. Pues lo hice.
Tamlyn

34
Sí, para no eliminar todos los datos de su tabla al restaurar desde el archivo de datos guardado, asegúrese de agregar la --no-create-infoopción. Vea mi respuesta para un ejemplo.
Gary

71

Puede volcar una consulta como csv así:

SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

8
¿Qué pasa si quiero volcar varias tablas?
SIFE

10
Esto crea un archivo en la máquina en la que se ejecuta la base de datos MySQL. Entonces, si está consultando desde una consola remota, este método falla. Si también hay una manera de hacerlo desde una consola remota, hágamelo saber.
dknight

2
¿Dónde guarda el archivo?
Techlord

1
@dknight Supongo que te refieres a una consola remota a través de una consola de terminal, en cuyo caso puedes recuperar el archivo volcado scpdespués de que finalice la conexión. Aquí hay un ejemplo. scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
Lucas

Parece inseguro: # 1290 - El servidor MySQL se está ejecutando con la opción --secure-file-priv, por lo que no puede ejecutar esta declaración
mikep

64

Volcar una tabla usando una consulta where:

mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql

Volcar una mesa entera:

mysqldump mydatabase mytable > data.sql

Notas:

  • Reemplace mydatabase, mytabley la instrucción where con sus valores deseados.
  • Por defecto, mysqldumpincluirá DROP TABLEy CREATE TABLEdeclaraciones en su salida. Por lo tanto, si no desea eliminar todos los datos de su tabla al restaurar desde el archivo de datos guardado, asegúrese de usar la --no-create-infoopción.
  • Es posible que tenga que añadir las apropiadas -h, -uy -popciones a los comandos de ejemplo anterior con el fin de especificar el host de base de datos, el usuario y la contraseña deseada, respectivamente.

38

Puede usar la opción --where en mysqldump para producir una salida que está esperando:

mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql

Como máximo, se eliminarán 100 filas de test.t1 de la tabla de la base de datos.

Saludos, WB


6

Si desea exportar su última n cantidad de registros en un archivo, puede ejecutar lo siguiente:

mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql

Lo anterior guardará los últimos 100 registros en export_file.sql, suponiendo que la tabla desde la que está exportando tenga una columna de identificación con incremento automático.

Deberá modificar los valores de usuario, localhost, base de datos y tabla. Opcionalmente, puede modificar la columna de identificación y exportar el nombre del archivo.


5

MySQL Workbench también tiene esta característica perfectamente en la GUI. Simplemente ejecute una consulta, haga clic en el icono Guardar junto a Exportar / Importar:

ingrese la descripción de la imagen aquí

Luego elija "sentencias SQL INSERT (* .sql)" en la lista.

ingrese la descripción de la imagen aquí

Ingrese un nombre, haga clic en guardar, confirme el nombre de la tabla y tendrá su archivo de volcado.


3

Combinar mucho de lo anterior aquí es mi ejemplo práctico real, seleccionando registros basados ​​tanto en meterid como en marca de tiempo. He necesitado este comando durante años. Se ejecuta muy rápido.

mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep  '^INSERT' > 5406.sql

-1

mysql Exporte la línea de comando de resultados de la consulta:

mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt

me está funcionando en ubuntu, comando: mysql -h localhost -u root -p dbname -e "select * from users where id = 1; select * from staffs where id = 1" --xml> / var / www / html / project / backups / db.xml
Ramesh
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.