gpt4 book ai didi

java - 使用java将csv文件中的数据导入access数据库

转载 作者:行者123 更新时间:2023-11-30 08:19:42 24 4
gpt4 key购买 nike

我需要使用 java 将 csv 导入到访问数据库中。我尝试使用以下代码

我的代码:

  public static void main (String args[])
{
String dbFileSpec = "C:\\Documents and Settings\\admin\\My Documents\\NetBeansProjects\\AutomateExcelDatabase\\Centre.accdb";
// String accessTableName = "Centre";
String csvDirPath = "C:\\Documents and Settings\\admin\\My Documents\\NetBeansProjects\\AutomateExcelDatabase";
String csvFileName = "myjdbcfile.csv";
try (Connection conn = DriverManager.getConnection(
"jdbc:ucanaccess://" + dbFileSpec
// + ";newdatabaseversion=V2007"
)) {
try
{
String strSQL = "SELECT * INTO " + dbFileSpec + " FROM [Text;HDR=YES;DATABASE=" + csvDirPath + ";].[" + csvFileName + "]";
System.err.println("SQL --> "+strSQL);
PreparedStatement selectPrepSt = conn.prepareStatement(strSQL);
boolean result = selectPrepSt.execute();
System.out.println("result = " + result);
}
catch(SQLException ex)
{
System.err.println("Error --->"+ex.toString());
}
conn.commit();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
}
}

但它会抛出错误“net.ucanaccess.jdbc.UcanaccessSQLException:意外 token :需要 INTO:FROM”。

最佳答案

尝试使用的两个问题

SELECT ... INTO NewTableName FROM [Text; ...].[csvFileName]

在这方面是:

  1. SELECT ... INTO NewTableName FROM OldTableName 是 UCanAccess 不支持(至少目前不支持)的 Access SQL 结构,并且

  2. ... FROM [文本; ...].[csvFileName] 是一个 ODBC“技巧”,UCanAccess 不使用 ODBC。

但是,UCanAccess 使用 HSQLDB 并且 HSQLDB 提供对读取 CSV 文件的支持,如下所示:

final String csvFolder = "C:/__tmp/zzzTest/";
final String csvFileName = "myjdbcfile.csv";
final String csvDbName = "hsqldbTemp";
try (Connection hconn = DriverManager.getConnection(
"jdbc:hsqldb:file:" + csvFolder + "/" + csvDbName,
"SA",
"")) {
try (Statement s = hconn.createStatement()) {
s.executeUpdate("CREATE TEXT TABLE fromcsv (id int, textcol varchar(50))");
s.executeUpdate("SET TABLE fromcsv SOURCE \"" + csvFileName + "\" DESC");
try (ResultSet rs = s.executeQuery("SELECT * FROM fromcsv")) {
while (rs.next()) {
System.out.println(rs.getString("textcol"));
}
}
s.executeUpdate("SHUTDOWN");
File f = null;
f = new File(csvFolder + "/" + csvDbName + ".properties");
f.delete();
f = new File(csvFolder + "/" + csvDbName + ".script");
f.delete();
}
} catch (Exception e) {
e.printStackTrace(System.out);
}

所以你可以使用两个连接,

  • 到 Access 数据库的一个 jdbc:ucanaccess 连接,以及

  • 到 CSV 文件的另一个 jdbc:hsqldb 连接,

然后将 CSV 文件中的行插入到 Access 数据库中的表中。

关于java - 使用java将csv文件中的数据导入access数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26649043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com