Определите, содержит ли столбец в ResultSet значения во всех строках - PullRequest
0 голосов
/ 20 июля 2010

В моем приложении я выполняю дорогостоящий запрос, на создание которого уходит минуты. Я пытаюсь создать универсальный класс, который преобразует ResultSet в электронную таблицу Excel, где столбец исключается из электронной таблицы, если он содержит только нули. Я могу легко удалить столбцы из листа Excel по факту, но трудно «склеить» рабочие листы обратно после того, как я их разделил, когда столбцов слишком много.

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

Есть ли способ, которым я могу запросить объект ResultSet, который у меня уже есть (немного похоже на ColdFusion), и удалить из него столбцы?

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

Ответы [ 2 ]

0 голосов
/ 22 июля 2010

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

Более того, вы можете включить эту проверку в оригинальный запрос , через COUNT и т. Д. Это будет намного быстрее, чем написание Java-кода с тем же эффектом.

0 голосов
/ 21 июля 2010

Можете ли вы извлечь данные из ResultSet и сохранить их в памяти перед созданием рабочего листа, или они слишком велики?Если это так, то во время извлечения вы можете вспомнить, было ли ненулевое значение в каждом столбце.Когда вы закончите извлечение, вы точно знаете, какие столбцы можно опустить.Конечно, это не очень хорошо работает, если объем данных настолько велик, что вы не захотите хранить его в памяти.

Другим решением было бы сохранить результаты дорогостоящего запроса в ""Таблица результатов в базе данных.Каждая строка для выполнения данного запроса будет помечена «идентификатором запроса», взятым из последовательности базы данных.После того, как данные загружены в эту таблицу, последующие запросы для проверки того, что «все значения в столбце X являются нулевыми» должны быть достаточно быстрыми.

Примечание: если вы собираетесь использовать этот второй подход, невытяните все данные запроса в свое приложение, прежде чем сохранить их в таблице результатов.Перепишите оригинальный «дорогой» запрос, чтобы выполнить вставку.msgstr "вставить в query_result (столбцы ...) выбрать {дорогостоящий запрос}".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...