我正在尝试使用LOAD DATA LOCAL INFILE将数据加载到MySQL表中:
LOAD DATA LOCAL INFILE 'f.csv' INTO TABLE tableName
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\\r\\n'
IGNORE 1 LINES
(C1, C2, C3, C4)
SET cmj = REPLACE(@cmj,',','.');
操作系统:Ubuntu 14.04
MySQL:5.7
在文件my.cnf中我有这个配置:
[mysqld]
local-infile=1
[mysql]
local-infile=1
[client]
loose-local-infile=1
local-infile=1
我收到以下错误:
消息:SQLSTATE [42000]:语法错误或访问冲突:1148 这个MySQL版本不允许使用命令,查询是:LOAD DATA LOCAL INFILE'f.csv'INTO TABLE tableName FIELDS TERMINATED BY ';' '\ r \ n'IGNORE 1 LINES(C1,C2,C3,C4)终止的线路
我认为问题与MySQL中的新行有关
感谢您的帮助
修改
在我的file.csv中,我有两行(标题+值)。如果我将我的请求“IGNORE 1 LINES”更新为“IGNORE 0 LINES”,则会插入第一行(标题)。
所有行都被视为一行!!!!!
答案 0 :(得分:3)
连接数据库时使用 - local-infile 。
mysql -hhostname -uusername -p --local-infile test -A
希望这有帮助。
答案 1 :(得分:1)
根据MySQL reference manual v5.7,您收到的错误可能是由于服务器或客户端上的LOCAL
文件功能被禁用而导致的。
使用mysql
选项运行--local-infile
将在客户端启用LOCAL
功能,但是如果在由系统变量控制的服务器上禁用了此功能,则无济于事local_infile
。解决此问题的最简单方法是在运行时使用SET
命令重置系统变量:
SET GLOBAL local_infile = 1;
注意::在更高版本的MySQL中,您可以使用以下命令在服务器重启后使变量更改保持不变
SET PERSIST local_infile = 1;