[PRB] SQL Server の DTS ウィザードで、Excel の混合データ用の列型が検出されない場合がある

現象

Microsoft SQL Server データ変換サービス (DTS) のインポート ウィザードを使用して Microsoft Excel のワークシートからデータをインポートするとき、文字列型の列に混合データとして解釈される可能性のあるデータ (16 進のデータを表す英数字の文字列など) が含まれていると、最初の数行によって実際のデータ型が決定され、後続の行が NULL として転送される場合があります。DTS からは、一部の行が転送されていない可能性があることを示すメッセージは表示されません。


: SQL Server 2005 を使用している場合、SQL Server インポートおよびエクスポート ウィザードを使用してデータの変換を行います。

原因

この現象は、Excel ISAM の仕様によるものです。最初の 8 行によって、その列のデータ型が決定されます。たとえば、最初の 8 行の大部分に数字が含まれていれば、その列のデータ型は数値型になります。このデータ型に適合しない後続の値はすべて NULL として返されます。

回避策

回避策の 1 つとして、Excel のシートをテキスト ファイルとして保存し、このファイルを DTS ウィザードを使用して SQL Server にインポートするという方法があります。

詳細

現象の再現手順

例として、Excel で次のようなワークシートを作成します。
10 進
16 進
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
A
11
B
12
C
13
D
14
E
15
F
最初の列 "10 進" は "標準" に、2 番目の列 "16 進" は "文字列" に書式設定します。


このテーブルを DTS ウィザードを使用して Excel から SQL Server に読み込むと、SQL テーブルの 10 ~ 15 行目 (値 A ~ F) が NULL になります ("16 進" の列は、ブックでは "文字列" として書式設定されていますが、DTS では DBTYPE_R8 として検出され、Float (浮動小数点) 型になります)。

関連情報

詳細については、SQL Server Books Online の「データ変換サービス」を参照してください。
プロパティ

文書番号:236605 - 最終更新日: 2008/07/11 - リビジョン: 1

フィードバック