一括インポートする必要があるvarbinary(max)列があります。この列に入力するデータは、C#のbyte []です。一括インポートに使用されるカンマ区切りファイルでデータをフォーマットするにはどうすればよいですか?言い換えると、bcpユーティリティが受け入れる方法でbyte []から文字列に変換するにはどうすればよいですか?
Varbinary値の形式は0x01020304
は、SQL Serverが読み取るためのものです。
だからあなたのCSVは
col1,col2,varbinary
foo,1,0x01020304
bar,2,0x988776655443
2013年5月を編集、
テスト後、フォーマットファイルの有無にかかわらず、BULK INSERTでこれを機能させることができません。
機能するようになったら、もっと投稿します。この回答は削除できません
BCP Unicodeネイティブ形式を使用してインポート/エクスポートできます。エクスポートには_bcp -n
_を使用し、インポートにはWITH (DATAFILETYPE='widenative')
句を使用します。詳細は link をクリックしてください。
うまくいきました。 varbinaryデータは、csvファイルでは424C4F4220434F4E54454E54
の形式である必要があります。また、csvファイルの正しいコードページも指定する必要があります。
次の表があります。
CREATE TABLE [dbo].[BlobTable](
[id] [int],
[blobValue] [varbinary](max),
[textValue] [nvarchar](500)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
と一括インポートクエリ:
bulk insert dbo.BlobTable
from 'C:\importBlob.csv'
with (DATAFILETYPE = 'char', fieldterminator=',', codepage='1251')
これは、windows-1251エンコーディングのcsvファイルに対してうまく機能します。
1,424C4F4220434F4E54454E54,english text
2,424C4F4220434F4E54454E54,русский текст
ここで、値424C4F4220434F4E54454E54
は、バイナリ形式のBLOB CONTENT
です。