# java.sql.SQLException: Unable to open file



## JavaMensch (6. Oktober 2007)

Hallo,

ich habe ein für mich nicht lösbares Problem immer noch bzw wieder einmal und zwar wie folgt: 

wenn ich diese sql Anweisung in einer methode für java benutze klappt alles: 

 Code: 

String updateString = "LOAD DATA LOCAL INFILE 'test.txt' INTO TABLE tab02 FIELDS TERMINATED BY ';' ENCLOSED BY '\"'  ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES; ";


klappt alles wunderbar er nimmt den inhalt und kopiert ihn in die DB. 


wenn ich aber die .txt-Datei über eine getFileDialog()-Methode öffne klappt das nicht. 

hier mein Quellcode: 

 Code: 

private String getFileDialog() 
      { 
          FileDialog fd = new FileDialog (new Frame(), "Datei oeffnen"); 
          fd.setFile("*.txt"); 
          fd.setVisible(true); 
          fd.addWindowFocusListener(windowClosing()); 
          dir = fd.getDirectory()+fd.getFile(); 
          System.out.println(dir); 
          return dir;    
      }

damit wähle ich die datei aus, die ich für folgende Methode benutzen möchte: 

Code: 

private void openDatasetSet () 
    { 
          getFileDialog(); 

      { 
        try 
        { 
             System.out.println("===>   INIT Statement"); 
             Statement statement = conn.createStatement();    

             System.out.println("===>   Finished Statement");              
             String updateString = "LOAD DATA LOCAL INFILE "+dir+" INTO TABLE tab02 FIELDS TERMINATED BY ';' ENCLOSED BY '\"'  ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES; "; 
             statement.executeUpdate (updateString); 
             System.out.println("===>   Finished Statement NACH DER SQL ANWEISUNG"); 
             System.out.println(updateString);    

        } 
        catch (SQLException e) 
        { 
            System.out.println(e); 
        } 
      } 

    }





er kann die datei einfach nicht finden bzw öffnen. 


Ich erhalte folgende fehlermeldung: 

init: 
deps-jar: 
compile-single: 
run-single: 
* Treiber laden 
* Treiber laden 
* Verbindung aufbauen 
* Verbindung wurde aufgebaut 
===>   INIT Statement openfileButton Verbindung geoeffnet 
C:\Dokumente und Einstellungen\PC\Desktop\TableSwitch\TableSwitch\test.TXT 
===>   INIT Statement 
===>   Finished Statement 
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'C:\Dokumente und Einstellungen\PC\Desktop\TableSwitch\TableSwitch\test.TXT INTO ' at line 1 
===>   INIT Statement iAnzeigen Methode openfile


Ich hoffe das ihr mir helfen könnt. Ich bin schon am verzweifeln.


ich bedanke mich schon im vorraus für jeden vorschlag.


----------



## JavaMensch (6. Oktober 2007)

ach und wenn ich in dem SQL-Befehl 
 Code: 


  '"+dir+"'

schreibe anstatt 

Code: 

"+dir+"



erhalte ich folgende fehlermeldung: 

 Code: 

init: 
deps-jar: 
compile-single: 
run-single: 
* Treiber laden 
* Treiber laden 
* Verbindung aufbauen 
* Verbindung wurde aufgebaut 
===>   INIT Statement openfileButton Verbindung geoeffnet 
C:\Dokumente und Einstellungen\PC\Desktop\TableSwitch\TableSwitch\test.TXT 
===>   INIT Statement 
===>   Finished Statement 
java.sql.SQLException: Unable to open file 'Cokumente und EinstellungenPCDesktopTableSwitchTableSwitch   est.TXT'for 'LOAD DATA LOCAL INFILE' command.Due to underlying IOException: 

** BEGIN NESTED EXCEPTION ** 

java.io.FileNotFoundException 
MESSAGE: Cokumente und EinstellungenPCDesktopTableSwitchTableSwitch   est.TXT (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch) 

STACKTRACE: 

java.io.FileNotFoundException: Cokumente und EinstellungenPCDesktopTableSwitchTableSwitch   est.TXT (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch) 
        at java.io.FileInputStream.open(Native Method) 
        at java.io.FileInputStream.<init>(FileInputStream.java:106) 
        at java.io.FileInputStream.<init>(FileInputStream.java:66) 
        at com.mysql.jdbc.MysqlIO.sendFileToServer(MysqlIO.java:2820) 
        at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2074) 
        at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1451) 
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1787) 
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3250) 
        at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1355) 
        at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1270) 
        at ShowDB.openDatasetSet(ShowDB.java:312) 
        at ShowDB.actionPerformed(ShowDB.java:372) 
        at java.awt.Button.processActionEvent(Button.java:392) 
        at java.awt.Button.processEvent(Button.java:360) 
        at java.awt.Component.dispatchEventImpl(Component.java:4410) 
        at java.awt.Component.dispatchEvent(Component.java:4240) 
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) 
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) 
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) 
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) 
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) 
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) 


** END NESTED EXCEPTION ** 


===>   INIT Statement iAnzeigen Methode openfile gestartet





ich versteh es einfach nicht. 

Ich hoffe es kann mir hier einer helfen sitze schon seit ca. 7std an diesem Prob  .


----------

