0

我想将 SQL 表 (Practice2.dbo.Adress) 中的“Street”列 (NVARCHAR(50)) 导入 Excel (ExcelDestination.xls)。我知道如何在 SSIS 中执行此操作,但在 BIML 中我似乎找不到正确的代码,尤其是在源和目标之间进行列映射。当我尝试生成 SSIS 包时,出现错误

“无法解析对 'TableResource' 类型的 'Adress' 的引用。'TableName="Adress"' 无效。提供有效的范围名称。”

这是我到目前为止所做的:

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
    <OleDbConnection Name="ConnectionWithPractice2" ConnectionString="Provider='SQLNCLI11'; Data Source='DWH'; Initial Catalog='Practice2'; User Id='system'; Password='password';"></OleDbConnection>
    <ExcelConnection Name="Excel Connection Manager" ConnectionString="Provider='Microsoft.Jet.OLEDB.4.0';Data Source='C:\Users\adm-jpna\Documents\ExcelDestination.xls';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'">
    </ExcelConnection>
</Connections>
<Packages>
    <Package Name="Package1">
        <Tasks>
            <Dataflow Name="ImportIntoExcel">
                <Transformations>
                    <OleDbSource Name="OLE_DB_Source" ConnectionName="ConnectionWithPractice2">
                        <DirectInput>SELECT Street FROM Practice2.dbo.Adress</DirectInput>
                    </OleDbSource>
                    <ExcelDestination Name="Excel_Destination" ConnectionName="Excel Connection Manager">
                        <Columns>
                            <Column SourceColumn="Street"></Column>
                        </Columns>
                        <TableOutput TableName="Adress"></TableOutput>
                    </ExcelDestination>
                </Transformations>
            </Dataflow>
        </Tasks>
    </Package>
</Packages>

4

1 回答 1

1

我对您的 ExcelDestination 做了一些小改动

        <Package Name="so_45063165">
            <Tasks>
                <Dataflow Name="ImportIntoExcel">
                    <Transformations>
                        <OleDbSource Name="OLE_DB_Source" ConnectionName="ConnectionWithPractice2">
                            <DirectInput>SELECT N'123 Oak' AS Street;</DirectInput>
                        </OleDbSource>
                        <ExcelDestination Name="Excel_Destination" ConnectionName="Excel Connection Manager">
                            <ExternalTableOutput Table="Sheet1$" />
                        </ExcelDestination>
                    </Transformations>
                </Dataflow>
            </Tasks>                
        </Package>

TableOutput 是指表的 Biml 集合。您正在寻找ExternalTableOutput哪个指示引擎查看引用的对象(在本例中为 Excel)以验证它是否存在。标记的更改导致属性从TableNameto更改Table,然后由于我们引用的是工作表而不是表格,因此我们需要使用 $ 来指定。Sheet1将是一个表或命名范围,而Sheet1$表示实际的工作表。

由于您没有提供源 Street 和目标列之间的列映射,因此我删除了标签。

于 2017-07-12T17:59:34.797 回答