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:
好吧……你不能。 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
我有一个来自 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:
好吧……你不能。 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