SQL不接受AbsolutePath Java

时间:2015-09-23 11:02:27

标签: java mysql sql

我通过以下方式获得了一个文本文件:

JFileChooser dialog = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("Текстовый файл", "txt");
dialog.removeChoosableFileFilter(dialog.getFileFilter());
dialog.addChoosableFileFilter(filter);
dialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
dialog.setDialogTitle("Выберите текстовый файл");
dialog.setDialogType(JFileChooser.OPEN_DIALOG);
dialog.setMultiSelectionEnabled(false);
int ret = dialog.showDialog(null, "Открыть");
if (ret == JFileChooser.APPROVE_OPTION) {
    File file = dialog.getSelectedFile();
    pach = file.getAbsolutePath();
} else return;
System.out.println(pach);

上一个命令显示:

D:\data\streets.txt

现在我提出请求:

try {
   querySQL = "LOAD DATA LOCAL INFILE '" + pach + "' INTO TABLE " + DB_NAME + "." + TABLE_NAME + ";";
   stSQL.execute(querySQL);
} catch (SQLException e) {
   ErrorMsg(e, querySQL);
   isError = true;
   break;
}

我做了ErrorMsg问题:

Unable to process the query:
LOAD DATA LOCAL INFILE 'D:\data\streets.txt' INTO TABLE base2.streets;
java.sql.SQLException: Unable to open file 'D:datastreets.txt'for 'LOAD DATA LOCAL INFILE' command.Due to underlying IOException:

它消除了歪斜,以及为什么会发生这种情况?实际上,如果将此类请求插入Workbench,则执行查询时不会出现错误。请告诉我这个问题的解决方案,这是非常必要的。提前谢谢。

P.S。该文本由谷歌翻译

翻译成英文

1 个答案:

答案 0 :(得分:2)

您可能想要转义路径中包含的反斜杠。对于数据库,反斜杠(\)可以以无法在数据库中保存字符串的方式更改值。这可能是其他特殊字符的问题,例如'也。连接包含'的字符串给你查询,添加一个额外的'这将打破查询。

您可以使用StringEscapeUtils执行此操作。 https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html