• 締切済み

BULKINSERT時の件数表示について

Batファイルを作成し、CSVファイルをBULKINSERTにて DBに挿入しています。 FORループを使用し、フォルダに存在するテーブル名.txtの数だけ 処理を繰り返しています。 処理中に「(XXX 行処理されました)」が表示されない場合があります。 (挿入されたデータ件数には問題なく、  フォルダのCSVファイルが1件の場合には表示されます) 必ず「(XXX 行処理されました)」を表示させる方法があるのでしょうか? ※SQL Server 7.0のでは、表示されていました 環境  OS:Windows Server 2003  DB:SQL Server 2005

みんなの回答

  • goingMad
  • ベストアンサー率0% (0/0)
回答No.4

SET NOCOUNTステータスを明示的にONにしてみては どうでしょうか。

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms189837.aspx
vd0_0b
質問者

お礼

返事が大変遅くなってしまいました。 SET NOCOUNT OFF という意味ですよね? やってみましたが、残念ながら表示されませんでした。

すると、全ての回答が全文表示されます。
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

#1,#2です。 示して頂いたソースは全く問題なく動きました。相当な数・サイズのファイルでやりましたが、メッセージがスキップされることもありません。 私の環境では再現しないです。 SQL Server 2005はSP2が当たっていますか?SP1までにはこういう問題がありました。 http://support.microsoft.com/kb/919775/en-us FIX: The BULK INSERT statement may not return any errors when you try to import data from a text file to a table by using the BULK INSERT statement in Microsoft SQL Server 2005 もしかしたら、件数表示のないファイルは、変換エラーが発生している行があるのにエラーメッセージを返していないだけ、ということがあるかもしれません。 (もちろん、はずれているかもしれませんが)

vd0_0b
質問者

お礼

いろいろテストをして頂き、ありがとうございます。 残念ながらSP2は当たっています。 バッチファイルに問題ことがわかってよかったです。

すると、全ての回答が全文表示されます。
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

#1です。 当方全く同じ環境(Win2003&SQL2005)でそのような事象が確認できなかったので、問題ない範囲でソースを示して頂けませんか?

vd0_0b
質問者

お礼

何度もありがとうございます。 ソースを補足しました。

vd0_0b
質問者

補足

ソースは下記の通りです。(サーバ名等は変数としています) メッセージが全く表示されないわけではなく、表示されない場合があるという具合です。 (フォルダには、テーブル名.txtが数十個あります。 件数も10万件からゼロ件とさまざまです) -------- ここから @echo off FOR /F %%z IN ('DIR /B *.txt') DO ( CALL :SUB %%z ) GOTO :END :SUB SET PICKUP=%~n1 ECHO %PICKUP% sqlcmd -U%USER% -P%PSWD% -S%DBSRV% -d%DBNAME% -Q "TRUNCATE TABLE %PICKUP%" sqlcmd -U%USER% -P%PSWD% -S%DBSRV% -d%DBNAME% -Q "BULK INSERT %PICKUP% FROM '%~d0%~p0\%PICKUP%.txt' WITH (FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n', TABLOCK )" EXIT /B GOTO :END :END pause ----- ここまで

すると、全ての回答が全文表示されます。
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

FORループというところで気になったので念のため。 まさかLogファイルをAPPENDしてないとかではないですよね?

vd0_0b
質問者

お礼

回答ありがとうございます。 ログには出力していません。 SQL Server 7.0では、同じBatフォイルを使用して問題ありませんでした。

vd0_0b
質問者

補足

LOGファイルには書き込みせず、画面表示しています。

すると、全ての回答が全文表示されます。

関連するQ&A