我的暂存数据库中有一个带有2个输出路径和2个表的XML文件。表和输出路径具有相同的名称。 而不是写2次OleDbDestination并改变Inputpath和ExternalTableOutput我想使用一些Bimlscript。
我目前的解决方案:
<Dataflow Name="DF_MyXml">
<Transformations>
<XmlSource Name="MyXml">
<FileInput ConnectionName="simple.xml" />
<XmlSchemaFileInput ConnectionName="simple.xsd" />
</XmlSource>
<OleDbDestination Name="Database" ConnectionName="Dest">
<InputPath OutputPathName = "MyXml.Database" />
<ExternalTableOutput Table="Database" />
</OleDbDestination>
<OleDbDestination Name="Project" ConnectionName="Dest">
<InputPath OutputPathName = "MyXml.Project" />
<ExternalTableOutput Table="Project" />
</OleDbDestination>
</Transformations>
</Dataflow>
我想要达成的目标:
<Dataflow Name="DF_MyXML">
<Transformations>
<XmlSource Name="MyXml">
<FileInput ConnectionName="simple.xml" />
<XmlSchemaFileInput ConnectionName="simple.xsd" />
</XmlSource>
<#foreach (var OutP in ["myXML"].DataflowOutputs) { #>
<OleDbDestination Name="<#=OutP.Name#>" ConnectionName="Dest">
<InputPath OutputPathName = "MyXml.<#=OutP.Name#>" />
<ExternalTableOutput Table="<#=OutP.Name#>" />
</OleDbDestination>
<# } #>
</Transformations>
</Dataflow>
可悲的是,这不起作用。 ; - )
在API-Documentation for AstXMLSourceNode中,我找到了“DataflowOutputs”属性“获取此转换的所有数据流输出路径的集合”(听起来很有希望,嗯?)但我甚至无法弄清楚如何引用XMLSource无论如何都在Bimlscript中。
从RootNode开始我能够找到我的Dataflow-Task,但后来我遇到了困难,并没有设法“找到”我的Transformations \ XMLSource。
任何帮助都将非常感谢!!
顺便说一句:如果有一个解决方案可以根据给定的XSD自动创建目标表,那么这也会很大。 : - )
答案 0 :(得分:0)
您需要确保在单独的文件中声明您的连接,以便在Biml脚本中轻松访问。您可以使用Console.WriteLine()来打印输出窗口中有关对象的详细信息,并可以一瞥BimlScript中发生的情况。
在第二个文件中,传统上称为Environmnet.biml,
您需要(仅使用您的xml文件连接信息,此处的数据只是一个占位符):
<Connections>
<FileConnection Name="XmlFile" FilePath="C:\test\XmlFile.xml" RelativePath="true" />
<FileConnection Name="XmlXsd" FilePath="C:\test\XmlXsd.Xsd" RelativePath="true" />
</Connections>
然后你可以做一些事情:
var fileConnection = RootNode.Connections["XmlFile"];
(抱歉在我意外放入DbConnections之前)
从那里玩它。我现在没有任何xml文件可以帮助您获取所需的确切信息。我将在星期一更新。