转载自http://blog.youkuaiyun.com/sinat_34260423/article/details/52791770
最近在进行linux 的MySQL操作时,发现导入文件一直出错,显示ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement。
看了网上的很多办法都不成功,后来发现原来是因为在MySQL 5.7.6版本之后,导入文件只能在secure_file_priv指定的文件夹下
所以用show variables like '%secure%';命令显示文件目录
+--------------------------+-----------------------+
| Variable_name | Value |
+--------------------------+-----------------------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | /var/lib/mysql-files/|
+--------------------------+-----------------------+
3 rows in set (0.00 sec)
这样将导入文件放在 /var/lib/mysql-files/文件夹下,之后再从这里导入就可以了
load data infile '/var/lib/mysql-files/part.csv' into table PART fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';
如果显示ERROR 1261 (01000): Row 1 doesn't contain data for all columns
这个错误,是因为数据行不匹配,默认不能有空,用下列命令解决set sql_modul = 0;
另附:在linux下将csv文件导入mysql的方法:
1.在网上找到用shell文件,一行行插入,这个方法效率极其低,且错误率很高。我要插入100万条记录的时候,耗时5个小时也没有完成,而且只插入了50多万条记录。
2.进入linux系统下mysql命令行,然后执行use database(自己的数据库名称),然后执行
load data infile '/var/lib/mysql-files/yourself.csv'
into table t_your_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED by '"'
ESCAPED by '"' LINES TERMINATED by '\r\n';
即可,一般来说没有错误。
如果导入文件的路径写错了,也会报 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement, 显示同样的错误。
还有如果要将数据导入表中指定的字段,方法如下:
load data infile '/var/lib/mysql-files/yourself.csv'
into table t_your_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED by '"'
ESCAPED by '"' LINES TERMINATED by '\r\n'
(col1, col2, col3, col5);
将字段放到最后即可。