BIML:在Dataflow中为XMLSource自动创建OleDbDestinations

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BIML:在Dataflow中为XMLSource自动创建OleDbDestinations相关的知识,希望对你有一定的参考价值。

我的暂存数据库中有一个带有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”,“获取此转换的所有数据流输出路径的集合”(听起来很有希望,嗯?)但我甚至无法弄清楚如何以任何方式引用Bimlscript中的XMLSource。

从RootNode开始,我能够找到我的Dataflow-Task,但后来我陷入困境,并没有设法“找到”我的Transformations XMLSource。

任何帮助将非常感激!!

顺便说一句:如果有一个解决方案可以根据给定的XSD自动创建目标表,那么这也会很大。 :-)

答案

您需要确保在单独的文件中声明连接,以便在Biml脚本中轻松访问。您可以使用Console.WriteLine()来打印输出窗口中有关对象的详细信息,并可以一瞥BimlScript中发生的情况。

在第二个文件中,传统上称为Environmnet.biml,

你需要(只有你的xml文件连接信息,这里的数据只是一个占位符):

<Connections>
        <FileConnection Name="XmlFile" FilePath="C:	estXmlFile.xml" RelativePath="true" />
        <FileConnection Name="XmlXsd" FilePath="C:	estXmlXsd.Xsd" RelativePath="true" />
</Connections>

然后你可以做一些事情的效果:

var fileConnection = RootNode.Connections["XmlFile"]; 

(抱歉在我意外放入DbConnections之前)

并从那里玩它。我现在没有任何xml文件可以帮助您获取所需的确切信息。我星期一会更新。

以上是关于BIML:在Dataflow中为XMLSource自动创建OleDbDestinations的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 Spring cloud dataflow kafka binder 中为 Kafka 维护租户数据隔离?

BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

用BIML脚本中的csv文件替换所有双引号

BIML 中的嵌套查询

使用 BIML 导入 CSV 后变音符号丢失

打开 Biml 解决方案崩溃 VS2019