初めて投稿致します。
過去ログや他サイトでもいくつかみかけた事象ですが、
どこにもはっきりとした回答がないため質問させて頂きました。
知っている方がいたら、ご教授お願いします。
環境は、Win2003Server + SQL Server2000 です。
外部サーバからisqlで取得したデータをPerlでタブ区切りに加工し、
そのファイルをbcpでDBにインサートする処理でエラーが発生します。
エラー内容は、過去ログにもあったとおり
『文字列データの右側が切り捨てられました』というものです。
1行目からエラーが発生し、10回のエラー発生で異常終了します。
ただ、3万行あるデータを2万行と1万行にしてインサートすれば
問題なくDBに登録されます。
この事象はMicrosoftのバグなんでしょうか?
サイト上には、そのようなバグが報告されていないようですが。
それともどこかに仕様として紹介されているのでしょうか。
データのサイズ、レコード数に関わらず
bcpでインポートできるようにしたいのです。
ちなみに、現行は7.0で問題なく上記処理が稼動しています。
本サイト上に示されていた解決法のODBCバージョンですが、
ODBCは最新版が入ってるので、それ以外でこの事象の解決法を
知っている方がいましたらぜひとも教えてください。
以上、よろしくお願い致します。
No.3
- 回答日時:
>>本当にログのフォーマットのせいではないですよね?
>これはどういうことでしょうか?
誤記です。すいません。
データのフォーマット(書式)と書きたかったのです。
perlということで、UNIX絡みと思われたので、エンコードやら何やらと思ったのですが、
>分割インサートしたデータをbcp outして再度bcp inしても同じ現象がでます。
ということから、根本のようですね。
私の現業務でSQL-Serverを利用しておりますが、同様な現象が発生しません。
ちなみに
データ:8万件
カラム数:41フィールド
です。
分割インサートしたデータをbcp outする時に、-tオプションを利用せず、-nでやっても一緒ですか?
perlで編集ができる文字ではなくなってしまいますが、それができないのであれば、環境としての根本的な話になってくると思います。
いろいろとお手数かけましたが、解決しました。
結論からいいますと、マイクロソフトのバグでした。
いろいろと調査した結果、英語版のサポートに修正パッチが公開されていて、それを適用で同様のエラーは発生しなくなりました。
ありがとうございました。
また、質問させていただきます。
No.2ベストアンサー
- 回答日時:
・件数次第で成功
・旧SQL-Serverでは成功
という2点で、やはりログファイル的にOKということなので、環境しか考えられないかと・・・
もちろんディスクはFATでフォーマットしてませんよね?
BCPIN最中に、セグメントがギュウギュウになってしまっているとか?
本当にログのフォーマットのせいではないですよね?
>外部サーバからisqlで取得したデータをPerlでタブ区切りに加工し、そのファイルをbcpでDBにインサートする処理でエラー
でも2万と1万に切り分けて成功する。。。
ならば、分割して入れたデータをTAB区切りでBCPOUTしてtruncate、さらにBCPINしても同じところでエラーが出ると思うのですがいかがでしょう?
同じところで出ているのであれば、
3万件のデータがどれほどのサイズであるかを知りたいです。
この回答への補足
>もちろんディスクはFATでフォーマットしてませんよね?
フォーマットはNTFSです。
>本当にログのフォーマットのせいではないですよね?
これはどういうことでしょうか?
ログのフォーマットによって何か起こるということでしょうか??
1050YENさんの言うように、
分割インサートしたデータをbcp outして再度bcp inしても同じ現象がでます。
単純にデータ件数に依存しているようです。
かなり細かくやっていくと、ある件数以上からはエラーが発生するようです。
ちなみにデータのサイズは50M前後です。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- 携帯型ゲーム機 ニンテンドースイッチについてです。 長文失礼します 今朝までポケモンSVをプレイしていたのですが、突 1 2023/02/12 21:19
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- 電子マネー・電子決済 QUICPayの登録ができない。 4 2023/06/10 10:57
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
- 携帯型ゲーム機 ニンテンドースイッチについての質問です。 長文になるかもしれませんがすみません。 お昼頃にSwitc 3 2023/02/12 21:32
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
bcpインサートでのフォーマットファイルの書き方
SQL Server
-
SQLServer sqlcmdが使えない
SQL Server
-
バッチファイルからのBCP起動について
SQL Server
-
-
4
テーブル列数とデータファイル列数の違うbcpインサートをしたい
SQL Server
-
5
型 varchar から型 numeric への変換エラー。
その他(データベース)
-
6
SQL Server 2005 Expressでbcpを行うとエラーになる
SQL Server
-
7
オラクルではできるのにSQLSERVERではサブクエリーで複数キーを指定できない?
SQL Server
-
8
BCPユーティリティの使用法_ヘッダー情報の取得_
その他(プログラミング・Web制作)
-
9
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.net SqlConnectionでの連続S...
-
今日の日付が入った行のデータ...
-
likeとsubstrの使いわけについて
-
エクセルVBAでUserFormを起動し...
-
Accessのマクロでモジュールを...
-
Statement ignored というエラー
-
sqlplusでヘッダーが付かない
-
SQLで部分的にGROUP BYしたいとき
-
時間項目を60進数から10進数へ...
-
あいまい検索のパフォーマンス...
-
SQL*PLUSでの分秒までの表示の仕方
-
Texの枠囲み調節
-
wordの差し込み印刷での日付表示
-
テーブルの主キーをdate型...
-
今まで使ってたユーザーフォー...
-
アクセス 意図せずサブプロシー...
-
キャッシュを使わずにSELECTを...
-
日付型なら変数の先頭になん...
-
ODBCリンクの際にACCESSでは読...
-
date型のインデックス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bcp in でエラー
-
SQLserver算術オーバーフロ...
-
VB.net SqlConnectionでの連続S...
-
ACCESSのVBAでCSVを取込処理に...
-
ストアドプロシージャのRETURN...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
今日の日付が入った行のデータ...
-
VBA プロシージャの名前の取得
-
キャッシュを使わずにSELECTを...
-
sqlplusでヘッダーが付かない
-
Accessの数値から時間に変換す...
-
ODBCリンクの際にACCESSでは読...
-
Statement ignored というエラー
-
SQLで部分的にGROUP BYしたいとき
-
PL/SQLカーソルの2重FORループ...
-
SQLサーバで和暦から西暦に変換...
-
likeとsubstrの使いわけについて
-
全角空白のTRIMができない...
おすすめ情報