Informatica ETL:如何从导出的xml文件中确定目标数据库名称

时间:2018-05-02 04:06:22

标签: informatica

我有一个来自informatica的XML文件,代表一个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">

3 个答案:

答案 0 :(得分:1)

在xml中,您可以通过使用属性TRANSFORMATIONTYPE =&#34; Target Definition&#34;过滤标签SESSIONEXTENSION来获得目标数据库名称。

如果您已将对象用作连接类型,则在此标记内部将有一个子标记CONNECTIONREFERENCE,其具有带键CONNECTIONNAME的实际连接名称。

如果您已使用Connection变量作为连接类型,那么您将在密钥VARIABLE中使用它。

答案 1 :(得分:1)

您可以在Xpath表达式下面尝试获取工作流XML中所有目标定义的连接名称:

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

如果使用连接变量,请尝试以下:

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

通过将xml上传到以下网址:

来测试表达式

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

答案 2 :(得分:1)

嗯......你不能。 Informatica使用Connection。此对象在Integration Service服务器上定义,包含数据库服务器和名称。它不存储在Workflow XML文件中。

编辑: 您可以使用pmrep命令行实用程序来获取连接和详细信息。创建批处理或从控制台运行以下命令集:

首先,连接到存储库:

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

成功后,您可以获取所有连接:

pmrep listoccnections > ConnectionList.txt

如果您需要任何特定连接的详细信息,请运行:

pmrep getconnectiondetails -n ConnectionName -t ConnectionType

请记住,在ODBC连接的情况下,您将只获得Connections String名称,无服务器或数据库详细信息。使用ServerName_DBName等命名模式创建ODBC是一种很好的做法,以便更容易实现 - 尽管有时只使用源名称。

确保在完成后运行清理:

pmrep cleanup