0

我的暂存数据库中有一个带有 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>

可悲的是,这不起作用。;-)

AstXMLSourceNode 的 API-Documentation 中,我找到了属性“DataflowOutputs”,它“获取此转换的所有数据流输出路径的集合”(听起来很有希望,嗯?)但我什至无法弄清楚如何在 Bimlscript 中引用 XMLSource反正。

从 RootNode 开始,我能够找到我的 Dataflow-Task,但后来我被卡住了,没有设法“找到”我的 Transformations\XMLSource。

任何帮助将非常感激!!

顺便说一句:如果有一种解决方案可以根据给定的 XSD 自动创建目标表,这也将更好。:-)

4

1 回答 1

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 文件可供我使用,以帮助您获得所需的确切信息。我会在星期一更新。

于 2018-03-01T17:18:57.770 回答