0

SSISを使用して、ExcelからSQLテーブルへのデータインポートに取り組んでいます。

文字列値の一部が NULL 値に置き換えられるという問題に直面しています (最初の 8 つのレコードには数値のみが含まれているため)。言うまでもなく、接続文字列に IMEX=1 を追加してみましたが、問題は解決せず、いくつかの記事で推奨されているようにレジストリを改ざんしたくありません。

Excel の最初の 8 レコードの後の列に文字列値が存在する可能性がありますが、DB の元のデータを使用する必要があります。これは標準的な問題のように思われるため、適切な回避策を探しています。

4

2 に答える 2

1

事後にExcelソースのメタデータを修正する方法については、同様の質問に対する私の回答を参照してください。

https://stackoverflow.com/a/13459855/236348

これも試してください:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel] にあるレジストリ REG_DWORD "TypeGuessRows" を確認してください。これは、Excel が最初の 8 行だけを使用して列のデータ型を推測できないようにするための鍵です。すべての行をスキャンするには、この値を 0 に設定します。これにより、パフォーマンスが低下する可能性があります。IMEX=1 オプションを追加すると、IMEX 機能がわずか 8 行後に設定される可能性があることにも注意してください。代わりに IMEX=0 を使用して、レジストリ TypeGuessRows=0 (すべての行をスキャン) を強制的に機能させます。

このページから: http://www.connectionstrings.com/excel

Windows 7 では、このキーは [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel] にあります。

TypeGuessRows の範囲は、すべての場合は 0、スキャンする行数の場合は 1 ~ 16 です。用途に合わせて設定してください。

于 2012-11-28T15:37:08.143 に答える
0

問題の一時的な回避策を見つけました。 誰かがいつか役に立つと思ったら、ここに投稿して ください
...データ。ただし、条件付き分割を使用して最初の行 (ヘッダー行) を削除した後のみ。

このソリューションにより、最初の 8 つのデータ行に英数字の値がない場合でも、ヘッダーが英数字であるため、JET/ACE コネクタはデータ型を STRING - DT_STR として認識します。これにより、間に挿入される NULLS の問題が解決されます。

ソースとして Excel を使用する場合の問題と、IMEX=1 を使用した可能な解決策の詳細については、
URL 1: http://microsoft-ssis.blogspot.in/2011/06/mixed-data-types-in-excel-を参照してください。 column.html

URL 2: http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/1b9020ec-616c-42e2-99c0-18f1258ff5db

ありがとう、

ジャスティン・サミュエル。

于 2012-11-29T17:53:23.283 に答える