首页 文章

如何通过BIML将SQL从SQL导入Excel

提问于
浏览
0

我想将列'Street'(NVARCHAR(50))从SQL表(Practice2.dbo.Adress)导入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>

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)以验证它是否存在 . 标记中的更改导致属性从 TableName 更改为 Table 然后由于我们引用的是工作表而不是表,因此我们需要使用$指定 . Sheet1 将是一个表或命名为ranged,而 Sheet1$ 表示实际工作表 .

    由于您未在源街和目标列之间提供列映射,因此我删除了标记 .

相关问题