- - PR -
SQL ServerのBULK INSERTについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-30 20:04
SQL Server 2005でBULK INSERTステートメントを使用して、ファイルからテーブルにデータを取り込むクエリを作成しています。
取り込みの際に、BULK INSERTのフォーマットファイルを使用して形式チェックをおこなっているのですが、形式に一致するレコードと一致しないレコードが混在するファイルを取り込むと、一致するもののみがテーブルに取り込まれます。 ファイルに形式が一致しないデータが含まれる場合(エラーが発生した場合)は、すべてのデータを取り込まないようにする方法はありませんか。 なお、BULK INSERTのBATCHSIZEやROWS_PER_BATCHオプションを変更して試してみたのですが、特に変化はありませんでした。 よろしくお願いします。 | ||||
|
投稿日時: 2007-01-30 23:51
リファレンスを読む限りMAXERRORSあたりがくさいところですけど、ためしましたか?
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/tsqlref/ts_ba-bz_4fec.asp | ||||
|
投稿日時: 2007-01-31 14:00
burton999さん
早速のご回答ありがとうございます。 MAXERRORSは0に指定していますが、影響していない?ようです。 また、その他に指定しているオプションは、FORMATFILE、TABLOCKです。 | ||||
|
投稿日時: 2007-01-31 14:20
MAXERRORSは
なのでおそらく意味は無いですね。 BULK INSERTを使うストアドプロシージャを作るしか無いと思います。 (デフォルトでSQL Serverのsp_で始まるシステムのストアドプロシージャにあるかもしれませんが。) ストアドプロシージャで 変数を宣言して、MAXERRORSが1でも発生した場合に ROLLBACK TRANSACTION 0だったら COMMIT TRANSACTION って感じで作らないと無理だと思います。 | ||||
|
投稿日時: 2007-01-31 18:54
NAOさん
BEGIN TRAN 〜 COMMIT TRANでくくってエラー対応したところ、 うまくできました。 ありがとうございました。 |
1