2014-07-23 4 views
1

долгое время lurker, первое время для запроса.JDBC - Получить все имена таблиц из базы данных OpenOffice

Я попытался найти, как получить все таблицы из базы данных, созданной с помощью OpenOffice, используя JDBC, и пока я нашел ответы, которые работают для других, они не работают для меня. Сам код фактически возвращает что-то, но он возвращает что-то совершенно неожиданное.

Мой код:

try { 
     DatabaseMetaData md = conn.getMetaData(); 
     rs = md.getTables(null, null, "%", null); 

     while (rs.next()) { 
      tableNames.add(rs.getString(3)); 
      System.out.println(rs.getString(3)); 
     } 

    } 
    catch (Exception e) { 
     System.out.println("error in sendConnection()"); 
    } 

И выход:

SYSTEM_ALIASES 
SYSTEM_ALLTYPEINFO 
SYSTEM_AUTHORIZATIONS 
SYSTEM_BESTROWIDENTIFIER 
SYSTEM_CACHEINFO 
SYSTEM_CATALOGS 
SYSTEM_CHECK_COLUMN_USAGE 
SYSTEM_CHECK_CONSTRAINTS 
SYSTEM_CHECK_ROUTINE_USAGE 
SYSTEM_CHECK_TABLE_USAGE 
SYSTEM_CLASSPRIVILEGES 
SYSTEM_COLLATIONS 
SYSTEM_COLUMNPRIVILEGES 
SYSTEM_COLUMNS 
SYSTEM_CROSSREFERENCE 
SYSTEM_INDEXINFO 
SYSTEM_PRIMARYKEYS 
SYSTEM_PROCEDURECOLUMNS 
SYSTEM_PROCEDURES 
SYSTEM_PROPERTIES 
SYSTEM_ROLE_AUTHORIZATION_DESCRIPTORS 
SYSTEM_SCHEMAS 
SYSTEM_SCHEMATA 
SYSTEM_SEQUENCES 
SYSTEM_SESSIONINFO 
SYSTEM_SESSIONS 
SYSTEM_SUPERTABLES 
SYSTEM_SUPERTYPES 
SYSTEM_TABLEPRIVILEGES 
SYSTEM_TABLES 
SYSTEM_TABLETYPES 
SYSTEM_TABLE_CONSTRAINTS 
SYSTEM_TEXTTABLES 
SYSTEM_TRIGGERCOLUMNS 
SYSTEM_TRIGGERS 
SYSTEM_TYPEINFO 
SYSTEM_UDTATTRIBUTES 
SYSTEM_UDTS 
SYSTEM_USAGE_PRIVILEGES 
SYSTEM_USERS 
SYSTEM_VERSIONCOLUMNS 
SYSTEM_VIEWS 
SYSTEM_VIEW_COLUMN_USAGE 
SYSTEM_VIEW_ROUTINE_USAGE 
SYSTEM_VIEW_TABLE_USAGE 

Что возвращается, и как я могу обойти или решить эту проблему? Заранее спасибо!

Редактировать: Базы данных, созданные buh OpenOffice, по-видимому, являются встроенными базами данных. Это может вызвать проблемы. Попытка конвертировать его в нечто другое и посмотреть, что произойдет.

+0

похоже, что он получает таблицы для схемы «системы» (или что-то еще) – Leo

ответ

1

Я нашел способ исправить это, если другие сталкиваются с этой проблемой. Проблема заключалась в том, что OpenOffice сохранял базу данных в качестве базового файла с hsqldb под ней. Вам нужно сделать это просто обычным hsqldb.

Я использовал оба этих ссылок в качестве ресурсов:

http://programmaremobile.blogspot.com/2009/01/java-and-openoffice-base-db-through.html

https://forum.openoffice.org/en/forum/viewtopic.php?f=83&t=65980

Короче говоря, вам нужно извлечь файл .odb, перейдите в каталогах и найти каталог базы данных, проведение 4 другие файлы. Добавьте к ним префикс, а затем получите доступ к нему, как обычно.

Я все еще получаю чудовищность таблиц SYSTEM_ *, но теперь я действительно получаю таблицы, которые мне нужны. Оттуда я думаю, что могу понять, как просто получить эти случайные таблицы.

Смежные вопросы