我正在尝试使用jackess库来创建数据库并将数据导入其中。我发现的问题是,如果我创建一个名为"type"的表,这是jackess的保留词,那么我就不能使用ImportBuilder将数据导入到这个表中。生成一个带有"x"前缀的新表(新表将被命名为"xtype")。
我还尝试用另一个名称创建表,导入数据并重命名为保留名称。但是我找不到任何重命名表的方法。
表必须命名为"type"
我该怎么办?
jacess似乎不愿意将文本文件直接导入到名为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();