2014-07-07 50 views
0

我在h2中使用CSVREADER處理CSV文件,該文件非常棒。在H2中使用CSVREAD時刪除臨時數據庫文件

final String SQL = "SELECT name, age, address FROM CSVREAD('/home/testuser/csvfile.csv', null, 'fieldSeparator=,')"; 
    DriverManager.registerDriver(new org.h2.Driver()); 
    try (Connection c = DriverManager.getConnection("jdbc:h2:" + filename, "sa", ""); 
      PreparedStatement statement = c.prepareStatement(SQL); 
      ResultSet r = statement.executeQuery()) { 
     while (r.next()) { 
      // processing data... 
     } 
     LOGGER.debug("Processed data"); 
    } 

當此代碼運行時,它創建的臨時文件(csvfile.csv.mv.db和csvfile.csv.trace.mv​​.db)。是否有一個優雅的文件讓H2自行清理,還是手動代表它執行?

有沒有可能設置的屬性?

回答

1

可以使用CSV tool directly, without opening a database

Csv csv = new Csv(); 
csv.setOptions("fieldSeparator=,"); 
String fileName = "/home/testuser/csvfile.csv"; 
ResultSet rs = csv.read(fileName, null, null); 
while (rs.next()) { 
    // processing data... 
} 
rs.close();