My database has 3 tables: table1, table2 and table3
I would like to do a mysqldump on this database with the following conditions:
- Dump structure for all tables
- Only dump data for table1 and table2, ignore data in table3
Currently, I do this with 2 mysqldump statements
mysqldump -u user -p -d db > db_structure.sql
mysqldump -u user -p db --ignore-table=db.table3 > table1_and_table2_data.sql
Import them in the same order they were dumped (structure, then data from table1 and table2)
Is there a way to combine this into a single mysqldump command?
Answers
You can't combine them in one command but you can execute both commands at the same time and output to the same file.
mysqldump -u user -p --no-data db > structure.sql; mysqldump -u user -p db table1 table2 >> structure.sql
to avoid having to enter the password twice you can do
-ppassword
(note the lack of space!). Also use --no-data
in the first command or you end up with the data as well. -d isn't needed when you're doing just one database.
I don't think you can do it in one command. But you definitely can merge the output to one file. Why not to wrap it in some shell script that does following:
mysqldump -u $1 -p$2 -d db > dump.sql && mysqldump -u $1 -p$2 db --ignore-table=db.table3 >> dump.sql
You will run this script with two parameters: username and password.
You can remove the
INSERT INTO ...
part:mysqldump \
--opt \
-u ${DB_USER} -p${DB_PASS} \
${DB_NAME} \
| grep -v 'INSERT INTO `table3`' \
| grep -v 'INSERT INTO `table4`'
0 comments:
Post a Comment