Я хочу выполнить запрос к базе данных Oracle, и для каждого столбца в наборе результатов я хочу знать схему, из которой поступил столбец. Я попробовал следующее:
ResultSetMetaData rsMetadata = rs.getMetaData();
String schemaName = rsMetadata.getSchemaName(1)
Однако, это возвращает пустую строку. Есть ли способ получить имя схемы?
Редактировать в ответ на пони OMG:
Инструмент, который мы разрабатываем, берет данные из базы данных и анализирует данные, чтобы найти наиболее информативное подмножество для данного вопроса. Затем мы создаем запрос, который возвращает только те строки, которые являются информативными для данного вопроса. Например, если у нас была база данных клиентов и мы хотели узнать, какие клиенты, скорее всего, прекратят их обслуживание, наш инструмент может создать запрос, который возвращает 5% записей о клиентах, которые затем можно запустить с помощью мощных алгоритмов аналитики. Преимущество состоит в том, что мы проводим наш анализ только на подмножестве данных, что, конечно, сэкономит время. Также оказалось, что мощные алгоритмы аналитики теперь работают лучше, потому что первым шагом была фильтрация шума из наших данных.
Таким образом, в ответ на OMG Ponies пользователь указывает информацию о соединении с базой данных и запрашивает в качестве входных данных для нашего инструмента. Поскольку они могут указать любой запрос, который им нравится, пользователь сможет подключиться к схеме foo, а затем выполнить следующий запрос:
SELECT* FROM bar.customer;
Если бы по какой-то причине цвет глаз и пол были предикторами прекращения их обслуживания, результирующий запрос, который генерирует наша система, мог бы выглядеть так:
SELECT * FROM bar.customer WHERE bar.customer.eye_color='blue'
AND bar.customer.gender='M'
Было бы неплохо знать схему для каждого столбца в наборе результатов, чтобы мы могли убедиться, что наш запрос будет работать правильно. Можно предположить, что схема такая же, как схема, используемая в соединении с базой данных, и это должно быть хорошо в 99% случаев. Я просто обеспокоен тем, что в 1% случаев пользователь может сделать что-то неожиданное, например, выполнить запрос к другой схеме.