在终端上将sql文件导入mysql时,为什么不在最后添加一个半冒号呢?
喜欢 :
source file.sql
分号“;”是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用于临时文件,因此请勿在此处保留重要文件。
source
是一个MySQL 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