首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我们不在源filename.sql后面使用分号呢?

为什么我们不在源filename.sql后面使用分号呢?
EN

Stack Overflow用户
提问于 2015-11-16 12:22:51
回答 2查看 202关注 0票数 1

在终端导入sql文件到mysql时,为什么不在末尾加一个分号呢?

像这样:

代码语言:javascript
复制
source file.sql
EN

回答 2

Stack Overflow用户

发布于 2015-11-16 12:32:23

分号";“是mysql中的sql结束符,意思是它告诉mysql一条sql语句已经完成,直到here....so,它在mysql提示符中使用,而不是在linux shell或命令提示符中使用。

此外,如果您正在执行单个sql语句,那么它不是强制性的,因为只有当您正在使用多个sql语句时,它才是强制性的。

您也可以在下面的帮助链接中查看更多详细信息。

http://dev.mysql.com/doc/refman/5.7/en/entering-queries.html

Update1:

更好的选择是从mysql实用程序导入,如下所示-

代码语言:javascript
复制
mysql -uroot -p my_db < /my_file_path/file.sql

但是如果你想通过源代码来做,那么就按照下面的方法来做-

通过下面的命令连接mysql提示符,也可以使用任何gui工具。

代码语言:javascript
复制
mysql -uroot -p

现在从mysql提示符执行以下命令-

代码语言:javascript
复制
mysql> source /tmp/file.sql

注意: mysql应该在你的文件所在的路径有权限,通常mysql在/tmp中有权限,你可以在my.cnf或my.ini中或者通过"SHOW VARIABLES LIKE 'tmpdir'“命令来检查它的确切位置。

特殊:由于mysql使用此路径作为临时文件,因此不要将重要文件保存在这里。

票数 1
EN

Stack Overflow用户

发布于 2018-09-16 02:52:20

source是一个MySQL client command,而不是一个SQL命令。

您可能熟悉的另一个客户端命令是delimiter。它用于更改语句结束符,这样您就可以使用像CREATE PROCEDURE这样包含分号的语句。有时我使用双分号,因为这绝对不会在过程主体中使用。

代码语言:javascript
复制
mysql> delimiter ;;
mysql> CREATE PROCEDURE ... BEGIN ... END ;;

然后,您可以将分隔符设置回惯用的;

代码语言:javascript
复制
mysql> delimiter ;

现在想想看:如果像delimiter这样的mysql客户端命令需要有分号终止符,上面的命令会让人感到困惑。delimiter ;;实际上会将分隔符设置为单个;,然后是语句终止符;吗?delimiter ;会将终结器设置为空白吗?

客户端使用的解决方案是内置命令不需要语句结束符

这适用于所有客户端构建的命令,例如:

代码语言:javascript
复制
mysql> source file.sql
mysql> pager less
mysql> warnings
mysql> tee outfile.txt 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33728488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档