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

Informatica ETL: How to determine the target database name from the exported xml file

我有一个来自 informatica 的 XML 文件代表一个 ETL 作业。它具有用于数据发起者的源标签和用于数据目的地的目标标签。

源标记显示一个 DBDNAME 属性(我认为这通常是数据库的名称)和一个 NAME 属性(我认为这是 table 或视图名称)。

<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">

在 xml 中,您可以通过使用属性 TRANSFORMATIONTYPE ="Target Definition".

过滤标签 SESSIONEXTENSION 来获得目标数据库名称

如果您使用对象作为连接类型,则在此标签内您将有一个子标签 CONNECTIONREFERENCE,其中包含带有键 CONNECTIONNAME 的实际连接名称。

如果您使用连接变量作为连接类型,您将在键 VARIABLE 中拥有它。

您可以尝试使用以下 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

好吧……你不能。 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 名称,没有服务器或数据库详细信息。使用像 ServerName_DBName 这样的命名模式来创建 ODBC 是一个很好的做法,这样可以使这更容易——尽管有时只使用源名称。

确保运行清理完成后:

pmrep cleanup