Informatica ETL: как определить имя целевой базы данных из экспортированного XML-файла

У меня есть XML-файл от informatica, представляющий задание ETL. Он имеет исходные теги для создателей данных и целевые теги для назначения данных.

Исходные теги показывают атрибут DBDNAME (я думаю, это обычно имя базы данных) и атрибут NAME (я думаю, что это имя таблицы или представления).

<SOURCE BUSINESSNAME ="" DATABASETYPE ="Oracle" DBDNAME ="DBA QA" DESCRIPTION ="" NAME ="GL_LINES" OBJECTVERSION ="1" OWNERNAME ="DBASTA" VERSIONNUMBER ="4">

Однако целевые теги не имеют атрибута DBDNAME.

<TARGET BUSINESSNAME ="" CONSTRAINT ="" DATABASETYPE ="Oracle" DESCRIPTION ="" NAME ="LT_LOAD_CTL" OBJECTVERSION ="1" TABLEOPTIONS ="" VERSIONNUMBER ="2">

Как определить имя целевой базы данных?

Примечание: dtd находится ниже.

<!DOCTYPE POWERMART SYSTEM "powrmart.dtd">

person jshen    schedule 02.05.2018    source источник


Ответы (3)


Ну ... ты не можешь. Informatica использует Connection. Этот объект определен на Integration Service сервере и содержит сервер и имя базы данных. Он не хранится в Workflow XML-файле.

Изменить: вы можете использовать pmrep утилиту командной строки для получения подключений и сведений. Создайте пакет или запустите с консоли следующий набор команд:

Сначала подключитесь к репозиторию:

pmrep connect -r RepositoryName -d DomainName -s SecurityDomain -n UserName -x UserPasswd

Как только это будет успешно, вы можете получить все соединения:

pmrep listconnections > ConnectionList.txt

Если вам нужна информация о каком-либо конкретном соединении, запустите:

pmrep getconnectiondetails -n ConnectionName -t ConnectionType

Имейте в виду, что в случае подключений ODBC вы получите только имя Connections String, без сведений о сервере или БД. Чтобы упростить задачу, рекомендуется создать ODBC с шаблоном именования, например ServerName_DBName, хотя иногда используется только имя источника.

Не забудьте запустить очистку, когда закончите:

pmrep cleanup
person Maciejg    schedule 02.05.2018
comment
Есть ли еще один XML-файл, который я могу экспортировать, чтобы установить связь между целями и базой данных? - person jshen; 02.05.2018

вы можете попробовать следующее выражение Xpath, чтобы получить имя соединения для всех целевых определений в XML рабочего процесса:

/POWERMART/REPOSITORY/FOLDER//SESSION/SESSIONEXTENSION[@TRANSFORMATIONTYPE ="Target Definition"]/CONNECTIONREFERENCE/@CONNECTIONNAME

если используется переменная подключения, попробуйте следующее:

/POWERMART/REPOSITORY/FOLDER//SESSION/SESSIONEXTENSION[@TRANSFORMATIONTYPE ="Target Definition"]/CONNECTIONREFERENCE/@VARIABLE

Проверьте выражение, загрузив XML-файл по указанному ниже URL:

https://www.freeformatter.com/xpath-tester.html

person Leo    schedule 02.05.2018
comment
Как упоминалось в @Maciejg, вы можете получить только имя соединения, если задано прямое соединение, или переменную соединения из XML. - person Leo; 02.05.2018
comment
Это не соответствует чему-либо в моем XML-файле. - person jshen; 02.05.2018
comment
Теги Well Session Extension и COnnection Reference будут присутствовать, если вы экспортируете весь рабочий процесс. Не могли бы вы попробовать его после экспорта всего рабочего процесса? - person Leo; 02.05.2018

В xml вы можете указать имя целевой базы данных, отфильтровав теги SESSIONEXTENSION с атрибутом TRANSFORMATIONTYPE = "Target Definition".

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

Если вы использовали переменную соединения в качестве типа соединения, она будет указана в ключе ПЕРЕМЕННАЯ.

person prashant sugara    schedule 02.05.2018
comment
Я не вижу тега TRANSFORMATIONTYPE в моих файлах xml. Есть тег ПРЕОБРАЗОВАНИЯ. Я также вижу атрибут TRANSFORMATION_TYPE в тегах INSTANCE. - person jshen; 02.05.2018
comment
@jshen Извините за путаницу, я отредактировал ответ. Тег - SESSIONEXTENSION с атрибутом TRANSFORMATIONTYPE = Target Definition. - person prashant sugara; 03.05.2018