Почему мои внешние ключи отключены после запуска sqlldr? - PullRequest
1 голос
/ 20 августа 2009

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

В соответствии с этой запиской Ask Tom :

sqlldr отключит только ограничения которые относятся к другим таблицам (например: внешние ключи) НЕ первичный ключ.

SQLLDR только повторно включит ограничения, которые он отключил, а не те, которые вы сделали сами.

Я бы сказал, что мои внешние ключи должны быть включены.

Все наши контрольные файлы sqlldr похожи на этот:

options (direct=true, rows=20000)
load data
infile "clinical_code.txt"
append
into table clinical_code
fields terminated by "|"
trailing nullcols

Число rows намеренно больше, чем количество строк в файле данных, потому что, если оно было меньше, повредило бы мой первичный ключ .

Почему sqlldr не разрешает повторное включение моих внешних ключей, как кажется из документации?

Я прекрасно пишу SQL, чтобы при необходимости снова включить индексы. Я хотел бы знать, почему это происходит.

Использование обычного пути загрузки - хорошая альтернатива, но это добавило бы 2 минуты к нашему процессу сборки, и я хотел бы избежать этого, если это возможно.

Ответы [ 2 ]

4 голосов
/ 20 августа 2009

Из документации SQL * Loader 10gR2 :

Ограничения целостности, которые зависят от другие строки или таблицы, такие как ссылочные ограничения отключены до прямой загрузки пути и должны быть восстановленным впоследствии. Если РЕенабельно указан, SQL * Loader может быть включен они автоматически в конце нагрузки. Когда ограничения включается, вся таблица проверено. Любые строки, которые не проходят эту проверку сообщается в указанной ошибке журнал. См. Прямые нагрузки, целостность Ограничения и триггеры .

Кажется, вам нужно указать ключевое слово REENABLE, чтобы автоматически включить ограничения после загрузки.

0 голосов
/ 30 августа 2015

В SQL Loader у нас есть опции обслуживания индекса и опции, связанные также с ограничениями.

если его единственная прямая загрузка, то будет работать «повторно включаемая опция» и состояние ограничения будет соответствовать входным данным.

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

...