Создание пакета JDBC в Sybase - PullRequest
4 голосов
/ 28 марта 2012

У меня есть требование обновить таблицу, которая содержит около 5 миллионов строк. Поэтому для этой цели я хочу создать пакетные операторы в Java и обновить как массовую операцию.

Правильно, теперь у меня есть 100 пакетов, и все работает нормально. Но когда я увеличиваю количество пакетов свыше ста, я получаю исключение как: com.sybase.jdbc2.jdbc.SybBatchUpdateException: JZ0BE: BatchUpdateException: Ошибка произошла при выполнении оператора пакета : Сообщение пустое.

Как мне иметь больше командных выражений в моем объекте CallableStatement.

1 Ответ

1 голос
/ 08 августа 2012

Недостаточно репутации, чтобы оставлять комментарии ... но какие типы утверждений вы используете? сколько из этих строк вы обновляете? Есть ли у таблицы первичный ключ? Сколько столбцов в таблице и сколько этих столбцов вы обновляете?

Общий ответ: Среда JDBC в sybase очень быстрая. Вы можете, по крайней мере, рассмотреть возможность написания простой процедуры, которая получает первичный ключ (или другую) информацию, которую вы используете для идентификации строки, а также новые значения, в которые строка будет обновлена ​​как входные переменные. эта процедура обновит только одну строку.

Оберните эту процедуру в свой собственный java-метод, который обрабатывает callablestatement, регистрирует ваш номер ошибки и параметры сообщения об ошибке и т. Д.

Затем вы можете циклически проходить через любые конструкции, которые вы сейчас используете для обновления данных, и использовать тот же java-метод для вызова процедуры для обновления значений строка за строкой.

Опять же, я не знаю объема того, что вы пытаетесь сделать ... но я точно знаю, что если вы пытаетесь сделать однострочное обновление, это будет ОЧЕНЬ быстро.

...