1

csv ファイルからの一括挿入中に、ファイル内の行に00000100008値があり、ソース (csv ファイルの作成元) と宛先の両方temptableに同じフィールド (char(11)) があります。

挿入しようとすると、次のエラーが発生しました。

Bulk load data conversion error (truncation) for row 1, column 1 (fieldname)

先頭の 0 を削除し、この値を100008csv ファイルに変更してから一括挿入すると、宛先テーブルtemptable'++ 100008挿入された値として表示されます。何故ですか?二重のプラス記号を先頭に付けずに値に対処するにはどうすればよいですか?

スクリプトは次のとおりです。

BULK
INSERT temptable
FROM 'c:\TestFile.csv'
WITH
(
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
)
GO

編集: csvファイルからのいくつかのサンプルレコード。

100008,111122223333,Mr,ForeName1,SurName1,1 Test Lane,London,NULL,NULL,NULL,wd25 123,test@email.com.com,NULL
322,910315715845,Ms,G,Dally,17 Elsie Street,NULL,NULL,GOOLE,NULL,DN146DU,test1@email1.com,
323,910517288401,Mrs,G,Tom,2 White Mead,NULL,NULL,YEOVIL,NULL,BA213RS,test3@tmail2.com,
4

1 に答える 1

0

私の最初の考えは、ファイルがUnixシステムに保存されており、さまざまなスタイルの改行と互換性がない可能性があるということです。私の最初のアドバイスは、16進エディタを使用してテキストファイルを分析し、そこに配置されている文字を特定することです。

++100008は基本的に-行フォーマットがページヘッダーと矛盾していることを意味します。この問題を解決するにはdbccチェックテーブルを実行します。

これがお役に立てば幸いです。

よろしく、

于 2012-08-15T13:40:42.717 に答える