mysql 怎么导入/执行.SQL(存储过程)文件?

SQL:内容如下
FLUSH TABLES;

IF Query='describe pcestatus' Action='SkipIfExist' WITH Field='StopTime' Default='0000-00-00 00:00:00'
BEGIN
# Table: pcestatus
#
ALTER TABLE pcestatus
MODIFY StopTime datetime NOT NULL default '0000-00-00 00:00:00';
END

IF Query='describe pcestatus' Action='SkipIfExist' WITH Field='PCEStatus' Default='0'
BEGIN
# Table: pcestatus
#
ALTER TABLE pcestatus
MODIFY PCEStatus tinyint NOT NULL default '0';
END

目前我用bat直接导入mysql.exe -h localhost -uroot -pXXX -D DBName < "C:\test.sql" >>D:\Log\text.log 2>&1
log提示:ERROR 1327 (42000) at line 3: Undeclared variable: Query
请问如上所述的SQL文件怎么用bat执行,导入到mysql或者或怎么执行这个SQL

方法一 进入命令行
mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】,示例:
mysql –uroot –p123456 -Dtest < /home/zj/create_table.sql
注意:
如果在sql脚本文件中使用了use 数据库,则-D数据库选项可以忽略

方法二 进入mysql的控制台后,使用source命令执行
Mysql>source 【sql脚本文件的路径全名】 或 Mysql>\. 【sql脚本文件的路径全名】,示例:
source /home/zj/create_table.sql
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-04-30
你这个存储过程都不全,
开头的create 都没了追问

这个SQL的作用是在一个现有的DB执行,然后判断现有的某些table的某些field是否存在,如果不存在则添加

追答

我是说你这个存储过程的语句不齐全,正常的存储语句开头会有create xxxxx这些的。
你这个应该是存储过程的内容,而非完整的存储过程创建语句。
打个比方,一个完整函数是:
function calc(a,b){
return a+b;
}
函数内容是:
return a+b;

这样你能明白了吗?
你现在单纯导入的是存储函数的内容,
但是函数头部这些都不存在,所以mysql会报错。
mysql完整的存储过程一般为
CREATE FUNCTION `函数名字`
(`传参类容` varchar(6),xxxxxx int(10))
RETURNS int(10) /*返回类型*/
BEGIN
/*执行函数类容内容*/
RETURN xxxx;/*返回内容*/
END

追问

这位大佬,能否帮帮忙,如果要让我这个存储过程能用,应该要怎么修改?