我正在编写“使用SQL和Excel进行数据分析”一书中的示例。其中一个源文件(称为LoadSQLServer.sql
)以以下开头:
CREATE DATABASE SQLBook;
USE SQLBook;
DECLARE @LOADDIR VARCHAR(255) = '/somedir/testdata';
DECLARE @SQL NVARCHAR(MAX);
/*
more queries
*/
我试图用以下命令运行脚本:
mysql -u root < LoadSQLServer.sql
但是我得到了错误:
第5行出现错误1064(42000):您的SQL语法有错误;请查看与MySQL服务器版本相对应的手册,在第1行的“DECLARE LOADDIR VARCHAR(255)=/somedir/testdata”附近使用正确的语法
在使用上述脚本之前,我成功地运行了以下脚本(称为
script.sql
):CREATE DATABASE customer;
USE customer;
CREATE TABLE customerslist (
id INT NOT NULL AUTO_INCREMENT,
forename VARCHAR(20) NOT NULL,
surname VARCHAR(20) NOT NULL,
PRIMARY KEY (id) );
/*
more queries
*/
使用
mysql -u root < script.sql
命令。在这个脚本中没有DECLARE
语句,所以LoadSQLServer.sql
中的问题应该在这样的语句中。如何解决这个问题?我在Ubuntu上工作,
mysql --version
的输出是:mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
最佳答案
这个评论太长了。
您正在使用SQL Server的加载文件。MySQL不是适合这本书的数据库(在8.0版中已更改),因此没有适合它的加载文件。
如果您在合适的计算机上,可以下载SQL Server Express。否则,我建议您下载Postgres并使用该版本。
注意:我知道我们不应该对堆栈溢出提出建议。但作为这本书的作者,这是正确的做法。