MySQL dump by query
Is it possible to do mysqldump
by single SQL query
?
I mean to dump the whole database, like phpmyadmin
does when you do export to SQL
not mysqldump, but mysql cli...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
you can redirect it out to a file if you want :
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
Update: Original post asked if he could dump from the database by query. What he asked and what he meant were different. He really wanted to just mysqldump all tables.
mysqldump --tables myTable --where="id < 1000"
This should work
mysqldump --databases X --tables Y --where="1 limit 1000000"
Dump a table using a where query:
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
Dump an entire table:
mysqldump mydatabase mytable > data.sql
Notes:
- Replace
mydatabase
,mytable
, and the where statement with your desired values. - By default,
mysqldump
will includeDROP TABLE
andCREATE TABLE
statements in its output. Therefore, if you wish to not delete all the data in your table when restoring from the saved data file, make sure you use the--no-create-info
option. - You may need to add the appropriate
-h
,-u
, and-p
options to the example commands above in order to specify your desired database host, user, and password, respectively.
You can dump a query as csv like this:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'