当前位置: 首页 > 面试题库 >

Mysqldump仅具有某些前缀的表/ Mysqldump通配符?

房时铭
2023-03-14
问题内容

我有正在清理的庞大,混乱的数据库。它可以容纳500多个表,这是将Magento Enterprise和Joomla合并到一个数据库中的结果。

更糟糕的是,有一组70多个Joomla表完全没有使用。这些都以开头bak_

仅删除这些bak_表将很容易,但是我想先将其“ bak”起来(看看我在那里做了什么?)。在我的脑海中,我可以想象这样的命令:

mysqldump -u username -p mydatabase bak_*

但这是行不通的。最好的方法是什么?谢谢!

编辑:是的,我可以明确列出要包括的70个表,或要排除的〜430个表,但我正在寻找一种更好的方法,如果可能的话。


问题答案:

您可以在命令行上一个接一个地指定表名,但不能使用通配符。 mysqldump databasename table1 table2 table3

您也可以使用--ignore-table更短的时间。

另一个想法是将表放入文件中,例如

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

编辑文件并将所有数据库放在一行上。然后做

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

要将表格放在一行中(不推荐),您可以执行以下操作

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


 类似资料:
  • 问题内容: 有没有办法限制来自mysqldump命令的某些表? 例如,我将使用以下语法 仅 转储table1和table2: 但是,有没有类似的方法来转储 除 table1和table2 之外的 所有表?我没有在mysqldump文档中找到任何东西,所以暴力破解(指定所有表名)是唯一的方法吗? 问题答案: 您可以使用--ignore- table 选项。所以你可以做 之后没有空格(这不是错字)。

  • 问题内容: 我正在寻找用于在mysql数据库中转储所有数据的语法。我不需要任何表格信息。 问题答案: 如果您使用触发器,则还需要包括 如果您使用的是选项,则还需要包括

  • 我们有非常大的数据库(Mariadb10.3)和mysqldump,需要2-3个小时来完成整个数据库转储,而且在转储过程中还会导致应用程序性能下降。 经过一番研究,我们发现可以在my.cnf文件中添加[mysqldump]节。还可以为其添加“quick”、“max_allowed_packet=512m”等选项。 如果我们可以添加‘单事务’也与上述设置,那么DB将不会在转储期间被锁定,这应该会加快

  • MySQLDump - PHP Requirements |Installing |Getting started |API |Settings |PDO Settings |TODO |License |Credits This is a php version of mysqldump cli that comes with MySQL, without dependencies, outpu

  • 本文向大家介绍MySQL的mysqldump工具用法详解,包括了MySQL的mysqldump工具用法详解的使用技巧和注意事项,需要的朋友参考一下 导出要用到MySQL的mysqldump工具,基本用法是:   如果你不给定任何表,整个数据库将被导出。   通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。   注意,如果你运行mysqldump没有--qu

  • 在 Ubuntu 14.04 LTS 下,我想备份我的 mysql 数据库。 使用 mysql 工作台进行备份时(通过:“服务器”-“数据导出”),我收到通知: mysqldump版本不匹配 /usr/lib/mysql-workbench/mysqldump版本为5.7.9,但要转储的MySQL Server版本为5.7.17。由于mysqldump的版本比服务器旧,因此某些功能可能无法正确备份