首页 > 解决方案 > MySQL 错误 1148 和 1290:通过在 MySql Workbench 8 中导入 csv 文件来自定义日期类型格式 dd-mm-yyyy

问题描述

我厌倦了几种方法来导入具有 dd-mm-yyyy 日期数据类型的 csv 文件。首先我使用了 LOAD DATA LOCAL INFILE 方法:

LOAD DATA LOCAL INFILE 'C:\\Log1.txt' 
INTO TABLE Log_tmp 
COLUMNS TERMINATED BY ',' 
LINES TERMINATED BY '\r\n' 
(uid, DId , CName, @var1, Price, Custom) 
SET date = STR_TO_DATE(@var1,'%d-%m-%y'); 

然后我得到了错误:

错误代码:1148。此 MySQL 版本不允许使用的命令

然后我在这篇文章中找到了解决方案。IE,

On Windows (a little bit easier):
1. Run the following statement in MySQL Workbench:
SET GLOBAL local_infile = 'ON';
2. Run the following statement and make sure it shows ON:
SHOW VARIABLES LIKE "local_infile";
3. SHOW VARIABLES LIKE "secure_file_priv"; //Then you'll get the default path, usually C:\ProgramData\MySQL\MySQL Server 8.0\Uploads
4. Put your files into the folder shown in step 3
5. LOAD DATA without the LOCAL keyword (i.e., LOAD DATA INFILE 'your_file' INTO TABLE table_name ...)

使用上述方法后,出现以下错误:

错误代码:1290。 MySQL 服务器正在使用 --secure-file-priv 选项运行,因此无法执行此语句

请帮我解决。

标签: mysqldatemysql-workbenchimport-csv

解决方案


loose-local-infile如果你设置为 1它需要工作my.cnf

loose-local-infile = 1

然后重启你的mysql服务器。

重新启动后,您可以通过发出检查全局变量

 SHOW VARIABLES LIKE 'local_infile';

您也可以在不更改 my.cnf 的情况下启用 local_infile,SET GLOBAL local_infile = 1;但请记住,此变量将在重新启动后回滚到其原始状态(在 my.cnf 中定义)


推荐阅读