为什么我们不在源filename.sql之后使用半冒号?

时间:2015-11-16 04:22:51

标签: mysql

在终端上将sql文件导入mysql时,为什么不在最后添加一个半冒号?

喜欢:

source file.sql

2 个答案:

答案 0 :(得分:1)

分号“;”是mysql中的一个sql终止符意味着它告诉mysql一个sql语句已经完成,直到这里....所以它在mysql提示符中使用但不在linux shell或命令提示符下。

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

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

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

<强> UPDATE1:

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

mysql -uroot -p my_db < /my_file_path/file.sql

但如果您想按来源进行,请按以下方式进行操作 -

通过以下命令连接mysql提示符,或者您可以使用任何gui工具。

mysql -uroot -p

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

mysql> source /tmp/file.sql

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

特殊:由于mysql将此路径用于临时文件,因此请勿在此处保留重要文件。

答案 1 :(得分:1)

sourceMySQL client command,而不是SQL命令。

您可能熟悉的另一个客户端命令是delimiter。它用于更改语句终止符,因此您可以使用诸如CREATE PROCEDURE之类的包含分号的语句。有时我使用双分号,因为这肯定是在程序主体中不会使用的东西。

mysql> delimiter ;;
mysql> CREATE PROCEDURE ... BEGIN ... END ;;

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

mysql> delimiter ;

现在考虑一下:如果像delimiter这样的mysql客户端命令需要使用分号终止符,则上面的命令会造成混乱。实际上,delimiter ;;会将分隔符设置为单个;,然后是语句终止符;吗? delimiter ;会将终止符设置为空白吗?

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

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

mysql> source file.sql
mysql> pager less
mysql> warnings
mysql> tee outfile.txt