28

次のコマンドを実行して、CSV ファイルからデータを一括挿入しようとしています -

 BULK INSERT TestDB.dbo.patent
 FROM 'C:\1patents.csv'
 WITH (FIRSTROW = 1,  FIELDTERMINATOR = '^', ROWTERMINATOR='\n');

私が得ているエラーはこれです--

メッセージ 4866、レベル 16、状態 1、行 1
一括読み込みに失敗しました。データ ファイルの行 1、列 6 の列が長すぎます。
フィールド ターミネータと行ターミネータが正しく指定されていることを確認してください。
メッセージ 7399、レベル 16、状態 1、行 1
リンク サーバー "(null)" の OLE DB プロバイダー "BULK" がエラーを報告しました。プロバイダーは、エラーに関する情報を提供しませんでした。
メッセージ 7330、レベル 16、状態 2、行 1
リンク サーバー "(null)" の OLE DB プロバイダー "BULK" から行をフェッチできません。

これが最初の行のデータです--

 00000001^^18360713^295^4^0

また、テーブルの最後のフィールド (上記のデータの 6 列目 = 0 に対応) は「int」型です。

ここで何が間違っていますか?上記のエラーが発生するのはなぜですか?

4

4 に答える 4

4

ファイル ソースが Unix でない限り、ファイルの行ターミネータが本当に

\r\n

16 進エディタを使用してファイルのターミネータを検証するか、それを行ターミネータとして試してください。

于 2013-01-16T18:45:21.517 に答える