0

SQL Server 2005 のバルク ロードから次のエラー メッセージが表示されます。この問題を解決するためのアイデアを探していました。

行 2、列 4 (タイプ) の一括読み込みデータ変換エラー (指定されたコードページのタイプの不一致または無効な文字)。

BULK INSERT dbo.BobTable FROM 'C:\DataFiles\Bob.txt' 
WITH (FIELDTERMINATOR = '","', FIRSTROW=2,ROWTERMINATOR = '\n',DATAFILETYPE='char')

何か案は?

"id","altid","altid2","type"    
123456789.00,"ABC1234","ABC1234","R"

ソース ファイルは変更できませんが、挿入先のテーブルは変更できます。(理由は聞かないでください。ただし、ID の末尾に小数が挿入されています。対処する必要があります。)

CREATE TABLE [dbo].[BOB](
  [id] [nvarchar](50) NULL,
  [Altid] [nvarchar](50) NULL,
  [Altid2] [nvarchar](50) NULL,
  [type] [nvarchar](50) NULL
)
4

1 に答える 1

2

一括挿入は、フォーマット ファイルの助けがなければ、引用符とコンマ区切り記号をうまく処理できません。作成または生成してから、一括挿入で参照する必要があります。

あなたの例では、最初のフィールドは で終わっていますが、SQL はフィールドが長すぎるとは考えて,"いません。","

良い出発点は次のとおりです: フォーマット ファイルの作成

そして、これはフォーマットファイルの適用に関するもので、問題の例もあります:フォーマットファイルを使用してデータを一括インポートする

私は以前にこれらの方法を使用したことがあり、ファイル形式が時間の経過とともに変更された場合、維持するのが難しい場合がありますが、BULK INSERTプロセスに必要な柔軟性が得られます.

また、この作業のいずれかで SSIS を使用できますか? SSIS は、引用符とコンマで区切られたファイルを、BCP 形式のファイルよりもはるかに簡単に処理できます。オプションがある場合は、完全にお勧めします。

于 2010-11-01T01:59:52.773 に答える