web-dev-qa-db-ja.com

バルクインポートでvarbinary(max)列をインポートする方法は?

一括インポートする必要があるvarbinary(max)列があります。この列に入力するデータは、C#のbyte []です。一括インポートに使用されるカンマ区切りファイルでデータをフォーマットするにはどうすればよいですか?言い換えると、bcpユーティリティが受け入れる方法でbyte []から文字列に変換するにはどうすればよいですか?

4

Varbinary値の形式は0x01020304は、SQL Serverが読み取るためのものです。

だからあなたのCSVは

col1,col2,varbinary
foo,1,0x01020304
bar,2,0x988776655443

2013年5月を編集、

テスト後、フォーマットファイルの有無にかかわらず、BULK INSERTでこれを機能させることができません。

機能するようになったら、もっと投稿します。この回答は削除できません

4
gbn

BCP Unicodeネイティブ形式を使用してインポート/エクスポートできます。エクスポートには_bcp -n_を使用し、インポートにはWITH (DATAFILETYPE='widenative')句を使用します。詳細は link をクリックしてください。

1
StanleyJohns

うまくいきました。 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です。

1
Alexander Titov