¿Es posible hacerlo mysqldump
solo SQL query
?
Me refiero a volcar toda la base de datos, como phpmyadmin
cuando exportas aSQL
¿Es posible hacerlo mysqldump
solo SQL query
?
Me refiero a volcar toda la base de datos, como phpmyadmin
cuando exportas aSQL
Respuestas:
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"
Esto debería funcionar
mysqldump --databases X --tables Y --where="1 limit 1000000"
--no-create-info
opción. Vea mi respuesta para un ejemplo.
Puede volcar una consulta como csv así:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
scp
después de que finalice la conexión. Aquí hay un ejemplo. scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
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:
mydatabase
, mytable
y la instrucción where con sus valores deseados.mysqldump
incluirá DROP TABLE
y CREATE TABLE
declaraciones 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-info
opción.-h
, -u
y -p
opciones 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.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
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.
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:
Luego elija "sentencias SQL INSERT (* .sql)" en la lista.
Ingrese un nombre, haga clic en guardar, confirme el nombre de la tabla y tendrá su archivo de volcado.
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
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