mysql 怎么导入/执行.SQL(存储过程)文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 参考技术A 你这个存储过程都不全,
开头的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
这位大佬,能否帮帮忙,如果要让我这个存储过程能用,应该要怎么修改?
mysql如何导入sql文件
如图
给你copy一段:执行sql脚本,可以有2种方法:
第一种方法:
在命令行下(未连接数据库),输入 mysql -h localhost -u root -p123456 < F:\hello world\niuzi.sql (注意路径不用加引号的!!) 回车即可.
第二种方法:
在命令行下(已连接数据库,此时的提示符为 mysql> ),输入 source F:\hello world\niuzi.sql (注意路径不用加引号的) 或者 \. F:\hello world\niuzi.sql (注意路径不用加引号的) 回车即可 参考技术A 进入mysql使用命令导入sql脚本文件:
mysql> source test.sql;
其实test.sql要导入sql文件
source导入sql文件命令
比F盘test.sql文件导入命令:
source F:/test.sql;
以上是关于mysql 怎么导入/执行.SQL(存储过程)文件?的主要内容,如果未能解决你的问题,请参考以下文章