线程“main”中的异常java.sql.SQLException:无法打开文件

时间:2017-07-06 11:21:03

标签: java mysql jdbc

如何解决此错误并使加载数据查询打开我的文件?

我得到java.sql.SQLException:尝试从文件创建语句时无法打开文件。代码:

public class LoadData {

  public static void main(String[] args) throws Exception {

  File file=new File("C://Users//suriyan.s//Documents//suriyan//employees.csv");

  String filename = file.getAbsolutePath();

  System.out.println(filename);

  String tablename = "employee";

  Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/college", "root", "");


  // Load the data

  String qry = "LOAD DATA LOCAL INFILE '" + filename + "' INTO TABLE " + tablename + " FIELDS TERMINATED BY ','"
+ " LINES TERMINATED BY '\n';";

  Statement stmt = connection.createStatement();

  stmt.execute(qry);


  }
}

2 个答案:

答案 0 :(得分:0)

DATA LOAD INFILE的

Documentation

  

在Windows上,将路径名中的反斜杠指定为正斜杠或加倍反斜杠。

getAbsolutePath正在返回单个反斜杠......

Exception应该包含MySQL解释的文件名。

尝试(记住“\\”是Java中的单个反斜杠):

String filename = file.getAbsolutePath().replace("\\", "/");
System.out.println("File: \"" + filename + "\"");  // just for debugging

自从以root身份访问以来可能不是问题,但请检查:

  

非LOCAL加载操作读取位于服务器上的文本文件。出于安全原因,此类操作要求您具有FILE权限。

答案 1 :(得分:0)

问题可能是字符串查询'qry'。尝试去除分号;从字符串的末尾开始。