Mysqldump only tables with certain prefix / Mysqldump wildcards?

后端 未结 9 2522
一个人的身影
一个人的身影 2020-12-07 07:37

I have this huge, messy database I am cleaning up. It houses 500+ tables, which is the result of combining Magento Enterprise with Joomla in one single DB.

To make t

9条回答
  •  隐瞒了意图╮
    2020-12-07 08:28

    You can specify table names on the command line one after the other, but without wildcards. mysqldump databasename table1 table2 table3

    You can also use --ignore-table if that would be shorter.

    Another idea is to get the tables into a file with something like

    mysql -N information_schema -e "select table_name from tables where table_schema = 'databasename' and table_name like 'bak_%'" > tables.txt 
    

    Edit the file and get all the databases onto one line. Then do

    mysqldump dbname `cat tables.txt` > dump_file.sql
    

    To drop tables in one line (not recommended) you can do the following

    mysql -NB  information_schema -e "select table_name from tables where table_name like 'bak_%'" | xargs -I"{}" mysql dbname -e "DROP TABLE {}"
    

提交回复
热议问题