在终端导入sql文件到mysql时,为什么不在末尾加一个分号呢?
像这样:
source file.sql发布于 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实用程序导入,如下所示-
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使用此路径作为临时文件,因此不要将重要文件保存在这里。
发布于 2018-09-16 02:52:20
source是一个MySQL client command,而不是一个SQL命令。
您可能熟悉的另一个客户端命令是delimiter。它用于更改语句结束符,这样您就可以使用像CREATE PROCEDURE这样包含分号的语句。有时我使用双分号,因为这绝对不会在过程主体中使用。
mysql> delimiter ;;
mysql> CREATE PROCEDURE ... BEGIN ... END ;;然后,您可以将分隔符设置回惯用的;
mysql> delimiter ;现在想想看:如果像delimiter这样的mysql客户端命令需要有分号终止符,上面的命令会让人感到困惑。delimiter ;;实际上会将分隔符设置为单个;,然后是语句终止符;吗?delimiter ;会将终结器设置为空白吗?
客户端使用的解决方案是内置命令不需要语句结束符。
这适用于所有客户端构建的命令,例如:
mysql> source file.sql
mysql> pager less
mysql> warnings
mysql> tee outfile.txt https://stackoverflow.com/questions/33728488
复制相似问题