我们的数据库中有一百个表,其中二十个表的数据是通过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

最佳答案

在文件中获取table_name
用变量读取该文件
将该变量用于--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上那样进行测试,但我希望您对如何做到这一点有所了解。

08-03 15:38
查看更多