BULK INSERT
を使用してCSVファイルをインポートしています。 CSVファイルの列の1つに、分数を含むいくつかの値が含まれています(例:1m½f
)。
値は表示目的でのみ使用されるため、分数に対して数学的演算を実行する必要はないため、列をnvarchar
として設定しました。 BULK INSERT
は機能しますが、SQL内のレコードを表示すると、小数部がセント記号(¢
)に置き換えられているため、表示されるテキストは1m¢f
です。
これがなぜ起こっているのか、そして問題を解決する方法についての考えを理解するのに興味があります。 BULK INSERT
コマンドは次のとおりです。
BULK INSERT dbo.temp FROM 'C:\Temp\file.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' );
文字列データをWindowsコードページ1252からSQL Serverコードページに変換するBULK INSERT
を使用してCODEPAGE = 'ACP'
を実行する必要があります。
BULK INSERT dbo.temp FROM 'C:\Temp\file.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', CODEPAGE = 'ACP');
SQL Serverの十分に新しいバージョンでUTF-8データを取り込む場合:
[...] , CODEPAGE = '65001');
DATAFILETYPE = 'char|native|widechar|widenative'
を指定する必要がある場合もあります。