BLOBをvarbinary(MAX)フィールドに簡単に挿入するにはどうすればよいですか?引数のためにSQL Server管理スタジオを使用してデータベースにBLOBを挿入する方法
:
は私が挿入したい事があると仮定します。c:\ picture.png 表は mytableは列ですがmypictureblob で、場所はRECIDさ= 1
I私はしばらくの間グーグルグーグルであり、私は簡単な解決策を見つけることができません。
ありがとう!
BLOBをvarbinary(MAX)フィールドに簡単に挿入するにはどうすればよいですか?引数のためにSQL Server管理スタジオを使用してデータベースにBLOBを挿入する方法
:
は私が挿入したい事があると仮定します。c:\ picture.png 表は mytableは列ですがmypictureblob で、場所はRECIDさ= 1
I私はしばらくの間グーグルグーグルであり、私は簡単な解決策を見つけることができません。
ありがとう!
SQL Server Management Studio内のT-SQLを使用して、特にOPENROWSETコマンドを使用して、varbinary(max)フィールドに挿入できます。
例えば:この場合は、ファイルのパスが対象とSQLに相対的であることを
INSERT Production.ProductPhoto
(
ThumbnailPhoto,
ThumbnailPhotoFilePath,
LargePhoto,
LargePhotoFilePath
)
SELECT ThumbnailPhoto.*, null, null, N'tricycle_pink.gif'
FROM OPENROWSET
(BULK 'c:\images\tricycle.jpg', SINGLE_BLOB) ThumbnailPhoto
が良い例は、次のドキュメントを見てみましょう/ウォークスルー
Working With Large Value Types
注意このコマンドを実行しているクライアントではありません。
mgmt studioからする必要がありますか?ここでは、CMDラインからそれを行う方法は次のとおりです。
は"C:\ Program Files \ MicrosoftのSQLサーバ\ MSSQL \ Binnの\ TEXTCOPY.exe"/S <サーバー>/D <データベース>/T mytableは/ Cのmypictureblob/Fは、 "C:\ picture.png"/W "RecId ="/I
Ok ...これは長すぎました。 SQL管理スタジオツールは、このような単純なものではありません(これは、クエリのタイムアウトを設定する場所を探すときに気づいたもので、4つの異なる場所で行われました)。
私は他のものをダウンロードしましたSQLエディタパッケージ(私の場合はSQLマエストロ)。そして、それは、ブロブを見て、これらのフィールドに新しいブロブをロードできるブロブエディタを含みます。
入力いただきありがとうございます!
MSDNの記事はWorking With Large Value Types ですが、インポートの仕組みを説明しようとしていますが、2つのことが一緒になるため少し混乱することがあります。ここでは単純化されたバージョンがあり、2つの部分に分かれています。単純なテーブルを想定:
CREATE TABLE [Thumbnail](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Data] [varbinary](max) NULL
CONSTRAINT [PK_Thumbnail] PRIMARY KEY CLUSTERED
(
[Id] ASC
)) ON [PRIMARY]
あなたは(SSMSで)実行している場合:
SELECT * FROM OPENROWSET (BULK 'C:\Test\TestPic1.jpg', SINGLE_BLOB)
それは結果がBulkColumnという名前の列を持つ表のように見えることが表示されます。残りはちょうどあなたのテーブルには、またはあってもなくてもよい複数のカラムでのインサートにそれを当てはめている
INSERT [Thumbnail] (Data)
SELECT * FROM OPENROWSET (BULK 'C:\Test\TestPic1.jpg', SINGLE_BLOB)
:あなたのようなINSERTでそれを使用することができます理由です。 FOOを選択した結果の名前を指定すると、SELECT Foo.BulkColumnを使用して、その定数の後にテーブルの他のフィールドを追加することができます。
もっと複雑になるポーズは、そのデータをファイルにエクスポートして、それがまだOKであることを確認する方法です。あなたはCMDライン上で実行する場合:4つの追加「のparams」のために泣き言を開始するために起こっていると誤解を招くようなデフォルト値を与える
bcp "select Data from B2B.dbo.Thumbnail where Id=1" queryout D:\T\TestImage1_out2.dds -T -L 1
(変更されたファイルになりますwhihc)。あなたは、最初のものを受け入れる0に第二を設定し、第3および第4 assept、または明示することができます:
Enter the file storage type of field Data [varbinary(max)]:
Enter prefix-length of field Data [8]: 0
Enter length of field Data [0]:
Enter field terminator [none]:
そして、それが要求されます:
Do you want to save this format information in a file? [Y/n] y
Host filename [bcp.fmt]: C:\Test\bcp_2.fmt
を追加、それを実行する必要が次回-f C:\ Test \ bcp_2.fmtそしてそれは泣き声を止めるでしょう:-) 多くの時間と悲しみを節約します。
)で提供されていません。 – Toad
FROM句に別名を指定する必要があります –
TSQLでBLOBを選択するために、2つの方法があります。
SELECT * FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a
と同様に:
SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a
は必須であるFROM句の後に相関名を注意してください。
これで、INSERT SELECTを実行してINSERTすることができます。
How To Update A BLOB In SQL SERVER Using TSQLで説明したように、2番目のバージョンを使用して更新を行うこともできます。六角フォーム(管理Studio)で管理アプリケーションでそれを見るために
select * from openrowset (bulk 'c:\path\filename.ext',single_blob) a
:あなたは、単にSQLサーバー・マシン上のディスクからファイルを読み取ることができますしかし
。
したがって、たとえばデータベースをファイル(サーバー上のローカル)にバックアップし、上記のステートメントで別の場所にダウンロードすることができます。
TSQLは、上部のツールバーの[新しいクエリ]ボタンと同じですか? – Toad
T-SQLは、SQL Serverが使用するクエリ言語です。はい、新しいクエリを作成する必要があります...... –
ありがとう!これは渦を与えるでしょう – Toad