28

私はBULK INSERTCSVファイルをインポートするために使用しています。CSV ファイルの列の 1 つに、分数を含むいくつかの値が含まれています (例: 1m½f)。

値は表示目的でのみ使用されるため、分数に対して数学演算を行う必要はありません。そのため、列を として設定しましたnvarchar。動作しますが、SQL 内のBULK INSERTレコードを表示すると、分数がセント記号 () に置き換えられている¢ため、表示されるテキストは1m¢f.

この問題が発生する理由と、問題を解決する方法についての考えを理解したいと思っています。BULK INSERTコマンドは次のとおりです。

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

1 に答える 1

51

文字列データを 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'

于 2012-12-21T21:22:51.970 に答える