我想以定义的顺序运行几个.sql文件。所以我想写一个存储过程,为另一个.sql文件中的每个文件调用。我找不到这样一个mysql过程的例子。如果你能帮助我。
答案 0 :(得分:0)
理论上,我认为您可以使用LOAD DATA INFILE
将文件加载到临时表中,然后使用游标迭代临时表并使用PREPARE
和EXECUTE
来执行每一个 - 如果MySQL允许存储过程中的那些命令 - 但这是一个非常糟糕的方法来实现这一点。存储过程应该用于操作数据库中的数据,LOAD DATA INFILE
应该用于加载数据,而不是可执行语句。如果您需要执行已在外部保存的SQL,则应使用intended external methods来执行此操作。
你无法找到如何做你正在描述的事情的原因是因为有一种更容易的方法去做你想要完成的事情,而你想要做的就是反对哲学。 / p>
您可以像这样创建批处理或shell脚本文件:
mysql db_name < FirstFile.sql
mysql db_name < SecondFile.sql
.
.
.
或者,您可以创建一个主.sql文件,按顺序获取各个命令。假设您有一个文件master.sql
,内容如下:
source FirstFile.sql
source SecondFile.sql
.
.
.
然后你运行mysql db_name < master.sql
。