我们的数据库中有一百个表,其中二十个表的数据是通过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上那样进行测试,但我希望您对如何做到这一点有所了解。