mysql - 批处理 mysql 转储 - 根据 SELECT 排除某些表

标签 mysql database batch-file

我们的数据库中有一百个表,其中二十个表的数据是通过 LOAD DATA INFILE 生成的 (因此,我们没有必要使用 MYSQLDUMP 来保存它们,因为我们知道它们是最重的 - 大约是数据库大小的 80%)

这些LOAD DATA INFILE使用PHP表单进行管理,因此表的名称保存在数据库中,如下所示:

  • 表名称:import_table

  • 表格列:table_name、table_column、date_creation 等...

所以当我提出这个查询时:

SELECT table_name FROM import_table

我有这个结果:

list_of_customer
all_order
all_invoice
...

因此,由于此表包含所有要忽略的表(并且可以随时更改),因此我想创建我的批处理以执行MYSQLDUMP

所以我这样做了:

@ECHO OFF
"C:\wamp\bin\mysql\mysql8.0.18\bin\mysqldump.exe" mydatabase --result-file="C:\test1\test2\databases.sql" --user=**** --password=****

如何集成我的 SELECT table_name FROM import_table 以便使用选项 --ignore-table

最佳答案

  1. 获取文件中的 table_name
  2. 读取变量中的文件
  3. 将该变量用于 --ignore-table
@ECHO OFF

"C:\wamp\bin\mysql\mysql8.0.18\bin\mysql.exe" mydatabase -e "SELECT group_concat(table_name) FROM import_table" --user=**** --password=**** > queryresult.txt

set /p ExcludedTables=<queryresult.txt

"C:\wamp\bin\mysql\mysql8.0.18\bin\mysqldump.exe" mydatabase --result-file="C:\test1\test2\databases.sql" --user=**** --password=**** --ignore-table-=%ExcludedTables%

我无法在 Mac 上进行测试,但我希望您了解如何做到这一点。

关于mysql - 批处理 mysql 转储 - 根据 SELECT 排除某些表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59766643/

相关文章:

mysql循环选择

BAT 文件的 C# Process.Start() 对话框

database - 用于本地主机开发的 DB2 的免费替代品

C# SQL 连接字符串

python - 如何从 Django 中的一个字段引用不同的模型类型?

scripting - '翻译' .sh 到 .bat

windows - 在批处理文件中获取两个级别的路径

mysql - XAMPP - 错误 : MySQL shutdown unexpectedly

c# - 使用时如何给SQL添加参数

php - 你好!我正在尝试使用联系表 7 在我的 mysql 数据库中插入行