TSQLには、テーブルにデータをインポートする便利なコマンド BULK INSERT があります。以下の情報をもとに、実際にに実装していました。

 

http://moriroom.my.coocan.jp/site1/?p=1624

 

ちゃんと、エラーログも出ましたよ。でも以下のようなメッセージで、何行目でエラーが起きたのかはわかるんですが、何列目までとか、原因とかがわかりません。

 

Row 4 File Offset 1264 ErrorFile Offset 0 - HRESULT 0x80004005
Row 5 File Offset 1675 ErrorFile Offset 411 - HRESULT 0x80004005
Row 6 File Offset 2088 ErrorFile Offset 824 - HRESULT 0x80004005
Row 11 File Offset 4212 ErrorFile Offset 1234 - HRESULT 0x80004005

 

実践で使うテーブルやデータは列数が何十もあるので、原因を見つけるのが大変です。

 

SQL Server Management Studio で「新しいクエリ」の画面で、

 

BULK INSERT テーブル名 FROM '入力ファイル名'
 WITH (FIELDTERMINATOR='区切り文字', ROWTERMINATOR='\n')

-- WITHのオブションは適当に合ったものを入れてみてください

 

と直接コマンドを打ってみれば、何の列が何の原因でミスマッチ起こしているのかわかります。今回エラーを起こした原因は、テーブルの列の定義の桁数が足らないのが原因でした。

 

 

AD