我正在编写“使用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并使用该版本。
注意:我知道我们不应该对堆栈溢出提出建议。但作为这本书的作者,这是正确的做法。

09-11 17:50
查看更多