【问题标题】:How to call .sql files trough another .sql file in MySQL?如何通过 MySQL 中的另一个 .sql 文件调用 .sql 文件?
【发布时间】:2015-04-16 19:24:48
【问题描述】:

我有 25 个 sql 文件,每个文件都来自 mysqldump。让我们说他们调用 db1.sql、db2.sql ... 等等。

我想创建一个 sql 文件来调用所有其他文件。让我们说这个文件将调用 rumTest.sql。

我在 runTest.sql 里面写了:

\. C:\pathToFIle\db1.sql;
\. C:\pathToFIle\db2.sql;
\. C:\pathToFIle\db3.sql;
...

因此,在我的命令窗口中,我将文件称为

\. C:\pathToFIle\rumTest.sql;

这不起作用。在 rumTest.sql 中调用 "\. C:\pathToFIle\db1.sql;" 时,我尝试了不同的方式来放置双引号。

例如,我看到 Mysql 读取了 rumTest.sql 中的内容,但没有执行读取 db1.sql 的命令。 那么,执行此任务的最佳方法是什么? 我喜欢这两个帖子,但它们与 oracle 有关I need to call another sql file within an sql file using sql plus

【问题讨论】:

  • 你试过只引用文件名,而不是整个命令吗? \。 "C:\pathToFIle\db1.sql";
  • 嗨,Eresov。我已经尝试了所有引用的可能性。
  • 尝试转义反斜杠:source c:\\pathtofile\\db1.sql;您也可以尝试使用 '/' 作为路径分隔符 source c:/pathtofile/db1.sql;

标签: mysql file


【解决方案1】:

我找到了一个可行的解决方案(经过测试)。

我们不需要使用“;”在末尾。 所以文件应该是这样的:

//File rumTest.sql 

\. C:\pathToFIle\db1.sql
\. C:\pathToFIle\db2.sql
\. C:\pathToFIle\db3.sql

但是如果我们想插入一些sql命令我们应该使用“;”对于每一行。 代码应如下所示:

//File rumTest.sql    

\. C:\pathToFIle\db1.sql
USE db1;
SHOW TABLES;
\. C:\pathToFIle\db2.sql
SHOW TABLES; //(Display db2 tables. db2 is already selected)
\. C:\pathToFIle\db3.sql

所以在你的 cmd 窗口中你只调用

\. C:\pathToFIle\rumTest.sql

然后该文件将调用所有其他文件。

【讨论】:

  • 你要注意source命令(别名\.)不是SQL命令而是mySQL命令。主脚本的命名不应该有扩展名.sql,因为它更多是mySQL的批处理命令,这会导致混淆,因为这样的sql文件不能从MySQL-Workbench等经典SQL编辑器中执行。
【解决方案2】:

在你的主 sql 文件中,你可以像下面这样放置另一个 sql 文件:

主文件内部 (C:\main.sql)

SET @NAME = 'XYZ';

SOURCE C:\abc.sql

执行这个 C:\main.sql:

mysql -h abc -u xyz -p mno < C:\main.sql

在 C:\abc.sql 中

use table1;

insert into table1.school(name)values(concat('RAM_',@NAME));

文件 C:\abc.sql 中所有出现的 NAME 将被 XYZ 替换。

输出: insert into table1.school(name)values(RAM_XYZ);

这会奏效。你可以试试!

【讨论】:

    【解决方案3】:

    您应该可以在脚本中使用source 命令:

    source C:\pathToFIle\db1.sql;
    source C:\pathToFIle\db2.sql;
    source C:\pathToFIle\db3.sql;
    ...
    

    并像这样调用脚本:

    mysql -u YourUsername -p < C:\pathToFIle\rumTest.sql
    

    【讨论】:

    • 嗨布兰,它不会改变。该脚本是创建一个数据库。
    • 根据您的评论编辑。运行脚本时会显示哪些错误消息?
    • 你要注意source命令不是SQL命令而是mySQL命令。主脚本的命名不应具有扩展名 .sql,因为它更像是 mySQL 的批处理命令,这会导致混淆,因为此类 sql 文件无法从 MySQL-Workbench 等经典 SQL 编辑器中执行。
    猜你喜欢
    • 1970-01-01
    • 2015-01-22
    • 2016-12-12
    • 2021-06-16
    • 2011-05-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多