从bat文件中禁用Mysql外键约束(FOREIGN_KEY_CHECKS)

时间:2013-02-05 21:37:07

标签: mysql batch-file

我需要从批处理文件中运行大约100个.sql文件,以便将数据加载到我们的应用程序中的查找表中。我需要在加载进程启动之前禁用constain,并在进程完成后再次启用它。

我目前的代码是

    for /r "%ScriptsPathLookup%" %%f in (*.sql) do ( 
mysql --host=%Server% --port=%PortNumber% --user=%UserName% --password=%UserPassword% --database=%DB% <%ConstrainPath%\Constrain-disable.sql<%%f)

Here Constrain-disable.sql -> SET FOREIGN_KEY_CHECKS = 0;

但这不起作用。我相信如果我去'SET FOREIGN_KEY_CHECKS = 0;'在所有.sql文件中,它将正确加载。这不是最好的方法,很难维护。有谁能建议更好的解决方案?感谢。

1 个答案:

答案 0 :(得分:1)

您的示例代码具有双输入重定向<,但无法正常工作。一种相对简单的方法,使用与您相同的循环机制,涉及创建一个临时文件,顶部带有 disable 代码,然后将该文件与MySQL命令一起使用。

set TempFile="%TEMP%\MyTempSql.sql"
for /r "%ScriptsPathLookup%" %%f in (*.sql) do (
  type %ConstrainPath%\Constrain-disable.sql >%TempFile%
  echo.>>%TempFile%
  type %%f >>%TempFile%
  mysql --host=%Server% --port=%PortNumber% --user=%UserName% --password=%UserPassword% --database=%DB% <%TempFile%
)
del %TempFile%