バイナリファイルをSQL Serverにアップロードする 、varbinaryフィールドにしようとしています。私はそれを行うためにこのクエリを思いついた:
INSERT INTO Files(File, Name)
SELECT
"file.bin" AS Name
* FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File
GO
しかし、私はこのエラーを受け取ります:
データ型varcharからvarbinary(max)への暗黙的な変換は許可されていません。 CONVERT関数を使用して、このクエリを実行します。
私が正しく理解していれば、ファイルはバイナリでありながらテキスト(varchar)として読み取られ、varbinaryにバイナリとして保存する必要があります。その過程で破壊されるのではないかと思いますよね?そうでない場合でも、CONVERTメソッドを使用するにはどうすればよいですか?
フィールドと同じ順序でデータを配置すると、データは機能しました(または少なくとも機能しているように見えます)。
INSERT INTO Files(File, Name)
SELECT
* FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB) AS File
"file.bin" AS Name
GO
私はこれを自分で行ったことがありませんが、 このページ jpgをvarbinariesに挿入する同じ手順を示しています...唯一の違いは、パス名の前のNとASスイッチがないことです
それが役立つことを願っていますが、おそらく変換と関係がある何かを見逃しています
なぜそれがvarchar列を返すのかわかりません。 msdnの例 と同じように見えます。
その列をどのように変換するのかわかりません。多分...
SELECT
convert(varbinary(max), * FROM OPENROWSET(BULK 'C:\file.bin', SINGLE_BLOB)) AS File
ただし、SINGLE_BLOBを指定すると、varcharであることにもっと関心があります。