3

Excel ファイルから数千行 (120K) のデータを SQL Server にインポートする作業を行っています。今、私はこれを達成するためにSSISを使用しようとしていますが、Excelファイルが構築されているExcelテンプレートが最初の行だけにヘッダーを含んでいないように見えることを考慮して、すぐにいくつかの問題に遭遇しました(最初の6行にはヘッダー情報が含まれています) . BIDS で SSIS データ フロー タスクを使用してインポートを処理し、この問題を解決するにはどうすればよいですか? それとも、Excel ドキュメントから各行を直接読み取ることによって行を読み取る方がよいでしょうか?

ここで役立つと思われるその他の情報は次のとおりです。

a) Windows クライアント アプリケーションから Excel の各行を読み取り、データをデータベースに 1 行ずつ書き込む代わりの方法を見つけようとしています。

b) Excel ドキュメントに約 4 つの Excel ワークシートがあります。

c)私があまり慣れていないWindowsクライアントからSSISを使用するのではなく、Excelから1行ずつ読み取り、効率的に実行する方法がある場合。方法についての提案をいただければ幸いです

d) 私の Excel ドキュメントの特定のヘッダーは 7 行目にあり、情報がバックエンドの必要性のためだけであるため、最小化しています。

4

2 に答える 2

3

OpenRowsetExcelデータソースのプロパティ([プロパティ]ウィンドウ、[カスタムプロパティ]セクションの[OpenRowset])を次のような値に設定できますSheet1$a6:j。ここで、はaデータの最初の列、データjの最後の列、6通常はデータの直前のヘッダーの行です。データは次の行から開始する必要があります。と同様の値を設定して、最後の行を読み取るように設定することもできますSheet1$a6:j20
最初に指定された行は、ヘッダー行として扱われることもあれば、データを含む最初の行として扱われることもあることに注意してください。たとえば、Excelの
エクセルデータ
場合:3番目の行に設定OpenRowsetするSheet1$a3:jとヘッダー行として扱われます:
データプレビュー1
しかし、この行に設定OpenRowsetするSheet1$a3:j8と最初のデータ行として扱われます:
データプレビュー2
奇妙です。

于 2012-09-13T23:49:58.683 に答える
0

これを試して 、

SSIS を使用する代わりに、SQL Server で OPENROWSET 関数を使用できます。OPENROWSET 関数を使用する前に、SQL Server で必要なすべてのオプションを正しく設定する必要があるため、以下のクエリを段階的に実行します。

--execute step by step to process excel data into sqlserver using OPENROWSET/OPENDATASOURCE
sp_configure
sp_configure 'show advanced options',1
reconfigure
sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
SELECT * INTO XLImport8 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\StatusReport.xls', 'SELECT * FROM [Sheet1$]')
select * from XLImport8 

ありがとう、

ベンカット。

于 2012-09-14T05:59:41.483 に答える