我使用了一个应用程序将一些数据从文本文件导入mysql。我使用了以下代码。
try
{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
stmt1= (Statement) conn.createStatement();
int deleteRows = stmt1.executeUpdate("delete from powerdata where dateformat < dateformat_sub(now(), interval 8 month)");
query = "LOAD DATA LOCAL INFILE \"E:\\powerdata.txt\" INTO TABLE powerdata set dateformat=str_to_date(date, '%m/%d/%Y' '%H:%i:%s');";
int Update= stmt.executeUpdate(query);
}
但是将文本中的数据加载到mysql的查询为null。谁能告诉我我犯了哪个错误?
答案 0 :(得分:1)
可能问题是\"E:\\powerdata.txt\"
位吗?你正在逃避引号,但你没有逃避反斜杠。这意味着您的查询实际上如下所示:
LOAD DATA LOCAL INFILE“E:\ powerdata.txt”INTO TABLE powerdata set dateformat = str_to_date(date,'%m /%d /%Y''%H:%i:%s');
要修复文件名,请使用\"E:\\\\powerdata.txt\"
。
答案 1 :(得分:0)
您可能没有向用户授予使用FILE权限的权限。如果查看documentation,他们会谈到远程用户使用LOAD DATA LOCAL INFILE加载数据所需的权限。有一个很好的理由关闭它,所以如果你启用它就要小心。