Answers:
我也刚遇到这个问题。我必须添加LOCAL
到我的SQL语句中。
例如,这带来了权限问题:
LOAD DATA INFILE '{$file}' INTO TABLE {$table}
添加LOCAL
到您的声明中,权限问题应该消失了。像这样:
LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}
--local-infile
选项来调用mysql 。
我有这个问题。我四处搜寻,没有找到满意的答案。我在下面总结搜索结果。
拒绝访问错误可能意味着:
GRANT FILE on *.* to user@'localhost'
);要么,尝试使用以下命令:
load data local infile 'home/data.txt' into table customer;
这应该工作。就我而言,它奏效了。
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Lyon的字符串给了我一个很好的提示:在Windows上,我们需要使用slashes而不是反斜杠。该代码对我有用:
File tempFile = File.createTempFile(tableName, ".csv");
FileUtils.copyInputStreamToFile(data, tempFile);
JdbcTemplate template = new JdbcTemplate(dataSource);
String path = tempFile.getAbsolutePath().replace('\\', '/');
int rows = template.update(MessageFormat
.format("LOAD DATA LOCAL INFILE ''{0}'' INTO TABLE {1} FIELDS TERMINATED BY '',''",
path, tableName));
logger.info("imported {} rows into {}", rows, tableName);
tempFile.delete();
我遇到了同样的问题,并按照以下步骤解决:
对于第三点,您可以参考:https : //dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR
广告
如果您使用命令行,我发现很简单
登录为mysql -u[username] -p[password] --local-infile
然后 SET GLOBAL local_infile = 1;
选择您的数据库 use [db_name]
最后 LOAD DATA LOCAL INFILE 'C:\\Users\\shant\\Downloads\\data-1573708892247.csv' INTO TABLE visitors_final_test FIELDS TERMINATED BY ','LINES TERMINATED BY '\r \n' IGNORE 1 LINES;
SET GLOBAL local_infile = 1;
在RDS中似乎不起作用,但是无论如何,这--local-infile
确实起到了作用
我发现加载MySQL表可以快速而轻松地进行(我使用的是python / Django模型管理器脚本):
1)使用所有列VARCHAR(n)NULL创建表,例如:
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2)从csv中删除标头(第一行),然后加载(如果您忘记了LOCAL,则会得到“#1045-用户'user'@'localhost'的访问被拒绝(使用密码:是)”):
mysql> LOAD DATA LOCAL INFILE "/home/magula6/cogswatch2/well2.csv" INTO TABLE cw_well2 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
-> ;
Query OK, 119426 rows affected, 19962 warnings (3.41 sec)
3)更改列:
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
瞧!