假设我将一个文件插入到 varbinary(max)
字段中,如下所示:
CREATE TABLE myTable
(
FileName nvarchar(60),
FileType nvarchar(60),
Document varbinary(max)
)
GO
INSERT INTO myTable(FileName, FileType, field_varbinary)
SELECT
'Text1.txt' AS FileName,
'.txt' AS FileType,
*
FROM
OPENROWSET(BULK N'C:\Text1.txt', SINGLE_BLOB) AS Document
GO
当然,我的文件现在看起来像这样:
0xFFD8FFE000104A46494600010101004800....
有没有一种简单而优雅的方法来检索此文件?
我的偏好是立即在临时文件夹中打开它,而不是保存然后查看和删除。在 MS Access 中,这就像使用附件字段并双击上传/下载一样简单。
最佳答案
由于 SSMS 中没有用于此任务的内置功能,因此我通常编写一个简单的 LINQPad 脚本来提取 varbinary 列并将其写入文件系统。
类似这样的事情:
var results = from p in myTable
where p.ID == ... //your condition here
select p;
foreach (var item in results)
{
File.WriteAllBytes("C:\\" + item.FileName + item.FileType , item.Document.ToArray());
}
关于sql-server - 在 SQL Server 中查看存储在 Varbinary(MAX) 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45200249/