2012-12-21 17 views
21

BULK INSERTを使用してCSVファイルをインポートしています。 CSVファイルの列の1つに、端数を含む値が含まれています(例:1m½f)。BULK INSERTの後に特殊文字が正しく表示されない

数値は表示目的で使用されるので、分数に対して何らかの演算を行う必要はないので、列をnvarcharと設定しました。 BULK INSERTが機能しますが、SQL内のレコードを見ると、小数部はセントシンボル(¢)に置き換えられているので、表示されるテキストは1m¢fです。

私は、これがなぜ起こっているのか、そして問題の解決方法についての考えを理解することに興味があります。 BULK INSERTコマンドは次のとおりです。あなたは、SQL ServerのコードページにWindowsコードページからの文字列データを変換しCODEPAGE = 'ACP'を、使用してBULK INSERTに必要

BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n'); 
+0

データには文字通り半角文字が含まれていますか? – Melanie

+0

はい、1/2とは異なり、半分の文字が含まれています。 – MrMatt

+0

@AaronBertrand、一括挿入は: FROM 'code' 一括挿入dbo.temp 'C:\の一時\のfile.csvになり' (FIELDTERMINATOR = ''、ROWTERMINATOR = '\ n')WITH。 \t 照合順序はLatin1_General_CI_ASです。 ファイルがUnicodeとしてマークされているかどうかを確認するにはどうすればよいですか? – MrMatt

答えて

39

BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', CODEPAGE = 'ACP'); 
+0

ありがとう、これは動作します。 – MrMatt

+0

これは、ansiiテキストにアクセント付きの文字を正しく挿入するために必要だったものです(èなど)。 – monty

関連する問題