2016-09-14 8 views
0

Я пытаюсь вставить 3.8M записи в таблицу Teradata, содержащую 14 столбцов, через партию из 10000 записей с использованием пакета RJDBC R. Он всегда сбрасывается после вставки 380000 записей, т. Е. при 39-м исполнении партии. Это ошибка я получаю,Ошибка Teradata JDBC 1338 после определенного количества пакетных исполнений

Ошибка в .jcall (пс "[I", "executeBatch"):
java.sql.BatchUpdateException: [Teradata JDBC Driver] [TeraJDBC 15.10.00.22 ] [Ошибка 1338] [SQLState HY000] Произошел сбой при выполнении запроса пакета PreparedStatement. Сведения об ошибке можно найти в цепочке исключений, доступной с помощью getNextException.

Я попытался перейти на другой набор строк из одного и того же блока данных. И, поведение остается таким же, происходит сбой при 39-й партии.

Любая идея, что это такое Error 1338 и что может быть исправить? Кроме того, он упоминает о getNextException, но как использовать его с R?

подход я использую похож на этот один https://developer.teradata.com/blog/ulrich/2013/11/a-wider-test-case-on-r-jdbc-fastload

+0

«Сведения об ошибке можно найти в цепочке исключений, доступной с помощью getNextException». - Так что это говорит? –

+0

Спасибо @StephenC за указание на это. Я должен был поместить это в мой первоначальный вопрос. Я не уверен, как использовать 'getNextException' с помощью подхода, который я использую в R. – SanjayIV

ответ

0

Чтобы получить начальное исключение «объект», вам нужно использовать .jgetEx к а затем вы можете использовать метод getNextException на нем, чтобы получить основная причина.

См. this link на форуме разработчиков Teradata для полного примера.

Типичные причины исключения во время пакетного вставки не являются:

  • «значение, связанное»: недопустимые значения, чрезмерная точность числовых данных
  • «размера связанными»: вставленные строки создать «не больше номер в базе данных»ошибка

Так вы говорите, что вы тестировали различные наборы данных, и все они не в том же исполнении, что очень вероятно,„больше нет места в базе данных“.

Однако это вовсе не означает, что пространство, которое было предоставлено Вам в полном объеме: это может быть, что таблица плохо выбрана Первичного индекс (или данные имеют ошибку, которая производит дублирует первичных индекс), что приводит к очень перекошенному распределению. В этом случае вы будете тратить много места, которое можно было бы вернуть, если вы можете определить более важный индекс (или использовать таблицу NOPI, если вы используете ее как какую-то таблицу этапов).

Here вы можете найти обсуждение этой темы «космических отходов» с большим количеством полезных запросов для диагностики проблемы.