gpt4 book ai didi

sql-server - 将 .zip 文件保存到 SQL Server 中的 BLOB

转载 作者:行者123 更新时间:2023-12-03 02:40:36 26 4
gpt4 key购买 nike

我必须这样做:

  1. 获取此 @HTML 并保存到文件 example.txt
  2. example.txt 使用密码保存到 .zip
  3. .zip 文件转换为 blob 并存储到表中

你知道如何仅在 T-SQL 中执行此操作吗?可能吗?

DECLARE @HTML varchar(200)

SET @HTML = '<html>
<META http-equiv=Content-Language content=pl>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-2">
<body style="color:black; font-family: verdana, arial, helvetica, sans-serif; font-size:11px;">
TEST</body></html>'

SELECT @HTML

使用这样的东西?

    EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @IMG_PATH
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @TIMESTAMP, 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken

好的,我创建了这个:

using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;

namespace SaveBlobData
{
class SaveHTML
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SaveBlob(out SqlInt32 value, int idZak)
{
value = 3 + idZak;
}
}
}

我添加了.dll,但选择此选项时出现错误。问题出在哪里?

enter image description here

最佳答案

  1. 获取此 @HTML 并保存到文件 example.txt

对于这一部分,您可以使用 OLE 自动化对象

DECLARE @FSO int,
@oFile int,
@filename nvarchar(max) = 'c:\Folder\example.txt'

-- Create OLE Automation Object
EXEC sp_OACreate 'Scripting.FileSystemObject', @FSO OUT

-- Create file
EXEC sp_OAMethod @FSO, 'CreateTextFile', @oFile OUT, @filename, 8 , True

-- Write data
EXEC sp_OAMethod @oFile, 'Write', NULL, @HTML

-- Clear used objects
EXEC sp_OADestroy @FSO
EXEC sp_OADestroy @oFile
  • example.txt 使用密码保存到 .zip
  • 不知道如何使用 t-sql 来完成此操作,为此我们使用 powershell(或 cmd):

    # path to 7-zip
    $zip = "C:\Program Files\7-Zip\7z.exe"
    # file
    $FilesArh = "c:\Folder\example.zip"
    $Dir = "c:\Folder\example.txt"
    &$zip a "$FilesArh" "$Dir"

    创建文件Test1.ps1,其中包含以下内容:

    param
    (
    [String] $FilesArh,
    [String] $Dir
    )
    # path to 7-zip
    $zip = "C:\Program Files\7-Zip\7z.exe"
    &$zip a "$FilesArh" "$Dir"

    从 SQL Server 启动它:

    EXEC xp_cmdshell 'powershell C:\Folder\Test.ps1 "c:\Folder\example.zip" "c:\Folder\example.txt"' 
  • .zip 文件转换为 blob 并放入表中:
  • OPENROWSET您可以获取 BLOB 数据并将其插入表中。

    INSERT INTO your_table (BLOB_field)
    SELECT *
    FROM OPENROWSET(BULK 'c:\Folder\example.zip', SINGLE_BLOB) AS BLOB

    关于sql-server - 将 .zip 文件保存到 SQL Server 中的 BLOB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38585154/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com