AccessでSQLServerのへ画像ファイルを登録する際に
下記のようなINSERT文を書いたのですが
INSERT INTO TestTbl(id, filedata)
SELECT 0, BulkColumn
FROM OPENROWSET(BULK N’C:\image\sample.jpg’, SINGLE_BLOB)
エラーが発生しました。
エラー内容:FROM 句の一括行セットには相関名を指定してください。
というエラーが表示されてしまいました。
色々調べた結果、次のように記述すると上手く動作しました。
■insert文
INSERT INTO TestTbl(id, filedata)
SELECT 0, t1.*
FROM OPENROWSET(BULK N’C:\image\sample.jpg’, SINGLE_BLOB) AS t1
■update文
UPDATE TestTbl
SET filedata = (SELECT t1.* FROM OPENROWSET(BULK N’C:\image\sample.jpg’, SINGLE_BLOB) AS t1)”
WHERE id = ‘1111’
上記を応用して、画像以外の項目も一緒に登録 or 更新も出来ました。
でも、画像ファイル等のバイナリデータは、極力DBへ登録するのではなく
外部ファイルとして持っておいてDBには、ファイル名のみ保持している方が
DBのファイルサイズが膨大になったりという問題もなくなるし
管理もしやすいと個人的には思っています。
(今回は、クライアントさんの要望により登録してしまいました)
なお、SQLServerのimage型は将来削除されるようで
varbinary(MAX)を使用することを推奨されているようです。
参考サイト:http://chiebukuro.spn.yahoo.co.jp/detail/q1126411971?fr=pofee_pc