好的,您可以在 MS SQL 中完成所有这些操作。因为我对PHP一无所知。
所以首先这是我下面的表格。
1)创建blob格式文件,以便您可以导出blob。
DECLARE @sql VARCHAR(500)
SET @sql = 'bcp DatabaseName.dbo.Blob format nul -T -n -f C:\Users\Public\Documents\blob.fmt -S ' + @@SERVERNAME
SELECT @sql
EXEC master.dbo.xp_CmdShell @sql
格式化文件
2) 编辑格式文件。仅保留内容列。
2.1) 原始格式
2.2) 改变格式如下
3) 最后,我创建了一个存储过程,它将所有 varbinary 数据更改为 .jpb(您也可以使用不同的格式,而不仅仅是 .jpg)。
CREATE PROCEDURE BLOBImageExport
AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NOCOUNT ON
IF OBJECT_ID('tempdb..#export') IS NOT NULL DROP TABLE #export
DECLARE @imgID INT,
@imgName VARCHAR(128),
@sql VARCHAR(8000)
SELECT *
INTO #export
FROM Blob
WHILE (SELECT COUNT(*) FROM #export) > 0
BEGIN
SELECT TOP 1 @imgID = ID,
@imgName = imgName
FROM #export
SET @sql = 'BCP "SELECT Content FROM DATABASENAME.dbo.Blob WHERE ID = ' + CONVERT(VARCHAR(10), @imgID) + '" QUERYOUT C:\Users\Public\Documents\' + '' + @imgName + '' + ' -T -f C:\Users\Public\Documents\blob.fmt -S ' + @@SERVERNAME
EXEC master.dbo.xp_CmdShell @sql
DELETE #export
WHERE ID = @imgID
END
4)现在你可以看到下面的图片
4.1) 会计师形象
4.2) Accountant2 图片
5)因此,您可以在 PHP 中将所有图像复制到您指定的驱动器或使用 SSIS 或更改存储过程中要保存到磁盘的位置。
希望这可以帮助。