2017-07-12 6 views
0

SQLのテーブル(Practice2.dbo.Adress)から 'Street'(NVARCHAR(50))の列をExcel(ExcelDestination.xls)にインポートします。私はSSISでこれを行う方法を知っていますが、BIMLでは正しいコード、特にソースとデスティネーションの間の列マッピングを見つけることができません。私は、SSISパッケージを生成しようとすると、私はBIML経由でExcelからSQLへExcelをインポートする方法

「タイプの 『住所』 『TableResource』への参照を解決できませんでした。 『テーブル名=『住所』を』は無効です。有効なスコープ名を指定してください。」というエラーを取得しますここで

私がこれまでにやっていることです:

<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> 

+0

あなたのテーブルは実際には 'Adress'か' Address'であるべきですか – billinkc

答えて

1

私は

 <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コレクションを指し、あなたのExcelDestinationにいくつかのマイナーな変更を加えました。 ExternalTableOutputを探して、エンジンに参照されているオブジェクト(この場合はExcel)が存在することを確認するように指示します。タグの変更により、プロパティがTableNameからTableに変更されます。次に、ワークシートではなくテーブルを参照しているので、$でそのように指定する必要があります。 Sheet1はテーブルであるか、またはrangedと指定され、Sheet1$は実際のワークシートを意味します。

ソースストリートとターゲット列の間に列マッピングを指定していないため、タグを削除しました。

+0

Thanks billinkc、 – Abraxas

+0

答えに応じてExcelDestinationを変更し、ソーステーブルの名前を修正し、Excel Connection ManagerのConnectionStringを修正しました= 'Excel 12.0; HDR = YES')、xlsxファイルに接続するとExcelDestinationがデータフローに表示されます。 "エラー0:ノードExcel_Destination:接続Excel接続マネージャーでクエリを実行できませんでした: SELECT * FROM [Sheet1 $] インストール可能なISAMが見つかりませんでした。 =>このエラーは、接続文字列が変更される前に表示されました。何か提案してください? – Abraxas

+0

JET = XLSのため、プロバイダを変更する必要があります。 ACE = XLSX – billinkc

関連する問題