2016-10-03 3 views
0

Я хочу проверить, существует ли таблица, прежде чем я создам новую. Я использую следующий метод:Проверьте, существует ли таблица в базе данных informix и postgresql

DatabaseMetaData dbmd = con.getMetaData(); 
ResultSet rs = dbmd.getTables(null, null, getTableNamePattern(), null); 
if (rs != null) { 
    if (rs.next()) { 
     return true; 
    } 
} 

Он делает отлично подходит для баз данных, как Oracle, SQLServer и MySQL. Однако он не работает в Informix и postgresql. У кого-то есть хорошее предложение? Спасибо

+1

'create table if not exists ...' будет делать это в postgres. – Bill

+1

нижний регистр/верхний регистр проблема? Postgres хранит имена таблиц в нижнем регистре, поэтому вам нужно также передать patter как строчный регистр. –

+0

Я не думаю, что Java-код должен делать такие проверки. Любая схема существует и была правильно инициализирована администратором до запуска приложения Java, иначе это не было. – duffymo

ответ

0

Я только что попробовал это на PostgreSQL, и он работает отлично.

Проблема, вероятно, в вашем шаблоне поиска. Вот некоторые вещи, которые нужно иметь в виду:

  • _ используется в качестве шаблона для одной буквы, % в качестве шаблона для произвольной строки.

  • Шаблон чувствителен к регистру, а имена таблиц по умолчанию имеют строчный регистр в PostgreSQL.

+0

Должен ли я применить% в качестве параметра и установить его как значение по умолчанию при выполнении поиска? –

+0

Я не понимаю вопроса. Используйте 't%' для поиска всех таблиц, имена которых начинаются с 't', но не ожидайте, что они совпадут с прописными буквами' T'. –

+0

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

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