我们的数据库中有一百个表,其中二十个表的数据是通过 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 上进行测试,但我希望您了解如何做到这一点。
关于mysql - 批处理 mysql 转储 - 根据 SELECT 排除某些表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59766643/