2016-12-17 8 views
1

В дизайне отображения информатики должна быть целевая таблица, но в моем дизайне я использую informatica для вызова процедур хранения, и после того, как они были вызваны, вся работа выполнена, поэтому мне не нужна целевая таблица для быть вставлен или обновлен. Я использовал таблицу отсутствия в качестве целевой таблицы, а одно поле ерунды в качестве входного порта (потому что должен быть хотя бы один входной порт!), Затем не отмечен или опция (вставка, обновление, удаление) в конфигурации сеанса , так что informatica не будет генерировать операторы DML SQL, избегая ошибок «без таблицы». Но тогда informatica обрабатывает строку ввода как строку отклонения и пытается записать ее в плохой файл. И причина, по которой я снял флажок с опции insert, журнал сеанса показал, что произошла ошибка, которую не удалось вставить в плохой файл! Странно, эта ошибка никогда не показывалась на мониторе, и все сеансы успешно выполнялись! Он появился только в метатете informatica.Есть ли способ избежать целевой таблицы в informatica (powercenter)?

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

ответ

0

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

Если вы работаете в Linux/Unix, вы можете даже перенаправить файл в/dev/null (используйте папку:/dev /, file: null), чтобы файл фактически не записывался в файловую систему.

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

+0

Thx очень много! Я постараюсь это! – Jason

+0

В Windows, я просто проверить, что Я мог бы использовать «nul» для конкретного целевого файла и плохих файлов. Я даже мог выбрать «command» в качестве типа вывода. Это очень негибкий! – Jason

0

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

Я решил это, создав фиктивный исходный объект, у которого был один порт и фиктивная цель с одним портом того же типа данных. В исходном квалификаторе я добавил оператор SQL select 1 from dual (так как это Oracle).

Затем я добавил объект фильтра, для которого установлено значение false. Затем я подключил один порт из источника/определителя через фильтр и, наконец, к цели.

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

Сообщите мне, если вам нужны какие-либо разъяснения, и я могу обновить это ответ.

1

Используйте преобразование фильтра непосредственно перед мишенью и поставить состояния фильтра «FALSE»

Нет строк будет идти к цели