Как создать и вставить данные в таблицу со специальным именем?

Я пытаюсь использовать библиотеку jackcess для создания базы данных и импорта в нее данных. Проблема, которую я обнаружил, заключается в том, что если я создаю таблицу с именем «тип», которое является зарезервированным словом для jackcess, я не могу импортировать данные в эту таблицу с помощью ImportBuilder. Создается новая таблица с префиксом "x" (новая таблица будет называться "xtype").

Я также попытался создать таблицу с другим именем, импортировать данные и переименовать в зарезервированное имя. Но я не смог найти способ переименовать таблицы.

Таблица должна быть названа «тип».

Что я должен делать?


person Daniel San    schedule 31.07.2014    source источник
comment
Если это зарезервированное имя, вы не можете назвать тип таблицы. Это так просто.   -  person Coda17    schedule 31.07.2014
comment
Самое смешное, что могу, но не могу импортировать в него данные   -  person Daniel San    schedule 01.08.2014


Ответы (1)


Похоже, 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();
person Gord Thompson    schedule 01.08.2014
comment
Это идеально. Я пытался найти какой-нибудь метод setName для объекта таблицы и не понял, что таким образом можно переименовывать таблицы. Большое спасибо! - person Daniel San; 01.08.2014