2012年12月27日木曜日

SqlServerにSQLのみで画像(バイナリ)データを投入する

データの初期セットとしてDBに画像やファイルのデータを入れたいときの方法。Accessだかフォームだかのツールを使う例が多いが、正直そんなのやってられないのでSQLだけで対処する方法です。

CREATE TABLE myTable(Id nvarchar(max), Document varbinary(max)) 
INSERT INTO myTable(Id,Document) 
SELECT 1,img.BulkColumn
FROM (SELECT * FROM OPENROWSET(BULK N'D:\temp\1.jpg',SINGLE_BLOB) AS i ) img


注意点としては、指定するパスはDBサーバー上のものでないといけない、という点(ローカルのパスを指定してもファイルがないといわれる)。

また、実行には一括処理の行える権限(sysadminかbuiladmin?)が必要。


参考
http://weblogs.sqlteam.com/peterl/archive/2007/09/26/Insert-binary-data-like-images-into-SQL-Server-without-front-end.aspx


0 件のコメント:

コメントを投稿