• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:bcp in でエラー)

bcp in でエラー

このQ&Aのポイント
  • Win2003Server + SQL Server2000 環境で、isqlで取得したデータをPerlで加工し、bcpでDBにインサートする処理でエラーが発生します。エラー内容は『文字列データの右側が切り捨てられました』。現行は7.0では問題なく処理が稼働しています。
  • エラーが発生する際には、3万行のデータを2万行と1万行に分割すると問題なくDBに登録されます。この問題はMicrosoftのバグなのか、仕様として紹介されているのかはわかりません。
  • ODBCの最新版が入っている環境でありながら、ODBCバージョン以外でこの問題の解決策を知っている方がいれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

・件数次第で成功 ・旧SQL-Serverでは成功 という2点で、やはりログファイル的にOKということなので、環境しか考えられないかと・・・ もちろんディスクはFATでフォーマットしてませんよね? BCPIN最中に、セグメントがギュウギュウになってしまっているとか? 本当にログのフォーマットのせいではないですよね? >外部サーバからisqlで取得したデータをPerlでタブ区切りに加工し、そのファイルをbcpでDBにインサートする処理でエラー でも2万と1万に切り分けて成功する。。。 ならば、分割して入れたデータをTAB区切りでBCPOUTしてtruncate、さらにBCPINしても同じところでエラーが出ると思うのですがいかがでしょう? 同じところで出ているのであれば、 3万件のデータがどれほどのサイズであるかを知りたいです。

heaton
質問者

補足

>もちろんディスクはFATでフォーマットしてませんよね? フォーマットはNTFSです。 >本当にログのフォーマットのせいではないですよね? これはどういうことでしょうか? ログのフォーマットによって何か起こるということでしょうか?? 1050YENさんの言うように、 分割インサートしたデータをbcp outして再度bcp inしても同じ現象がでます。 単純にデータ件数に依存しているようです。 かなり細かくやっていくと、ある件数以上からはエラーが発生するようです。 ちなみにデータのサイズは50M前後です。 よろしくお願いします。

その他の回答 (2)

回答No.3

>>本当にログのフォーマットのせいではないですよね? >これはどういうことでしょうか? 誤記です。すいません。 データのフォーマット(書式)と書きたかったのです。 perlということで、UNIX絡みと思われたので、エンコードやら何やらと思ったのですが、 >分割インサートしたデータをbcp outして再度bcp inしても同じ現象がでます。 ということから、根本のようですね。 私の現業務でSQL-Serverを利用しておりますが、同様な現象が発生しません。 ちなみに データ:8万件 カラム数:41フィールド です。 分割インサートしたデータをbcp outする時に、-tオプションを利用せず、-nでやっても一緒ですか? perlで編集ができる文字ではなくなってしまいますが、それができないのであれば、環境としての根本的な話になってくると思います。

heaton
質問者

お礼

いろいろとお手数かけましたが、解決しました。 結論からいいますと、マイクロソフトのバグでした。 いろいろと調査した結果、英語版のサポートに修正パッチが公開されていて、それを適用で同様のエラーは発生しなくなりました。 ありがとうございました。 また、質問させていただきます。

回答No.1

サービスパックのバージョンは?

heaton
質問者

補足

サービスパックのバージョンは最新です。 何か解決法をご存知ですか? よろしくお願いします。

関連するQ&A