如何在具有特殊名称的表中创建和插入数据?

时间:2014-07-31 15:36:16

标签: java ms-access jackcess

我尝试使用jackcess库创建数据库并将数据导入其中。我发现的问题是,如果我创建一个名为&#34的表;键入",这是jackcess的保留字,那么我无法使用ImportBuilder将数据导入此表。生成一个带有前缀" x"的新表。 (新表名为" xtype")。

我也尝试使用其他名称创建表,导入数据并重命名为保留名称。但是我找不到任何重命名表的方法。

该表必须命名为"键入"。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

Jackcess似乎不愿直接将文本文件导入名为type的新表中,但以下代码似乎可以解决这个问题:

// open existing database
Database db = DatabaseBuilder.open(new File(
        "C:/Users/Gord/Desktop/foo.accdb"));

String tempTableName = "TemporaryNameForTable";

// import CSV file into new table with temporary name
ImportUtil.Builder ib = new ImportUtil.Builder(db);
ib.setTableName(tempTableName);
ib.importFile(new File("C:/Users/Gord/Desktop/foo.csv"));

// rename the new table
Table mso = db.getSystemTable("MSysObjects");
Row r = CursorBuilder.findRow(mso,
        Collections.singletonMap("Name", tempTableName));
r.put("Name", "type");  // new name is "type"
mso.updateRow(r);
db.close();