我有一个来自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">
答案 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上传到以下网址:
来测试表达式答案 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