2017-07-06 74 views
0

如何解決這個錯誤,並使加載數據查詢打開我的文件?線程「main」中的異常java.sql.SQLException:無法打開文件

我得到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); 


    } 
} 
+1

你能打印出完整的查詢並顯示給我們嗎?我的猜測是某處有一個小錯字。它看起來像你在單引號中圍繞文件路徑。 –

回答

0

LOAD DATA INFILE的Documentation

在Windows上,路徑名指定反斜線正斜槓或反斜槓一倍。

getAbsolutePath正在恢復單反斜線...

例外應包括文件名,因爲它是由MySQL解釋。

嘗試(記住, 「\\」 是Java中的一個反斜槓):

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

大概不會因爲訪問爲根的問題,但檢查:

非本地負荷運行讀取位於服務器上的文本文件。出於安全原因,這些操作要求您具有FILE權限。

0

問題可能是字符串查詢'qry'。嘗試刪除分號;從字符串的末尾開始。

+0

是的,這可能是一個問題取決於驅動程序/數據庫。我認爲MySQL是寬鬆的,但甲骨文並不接受它(很久以前)。 –

相關問題