【问题标题】:Inserting Image from hard disk into SQL Server in while loop在while循环中将图像从硬盘插入SQL Server
【发布时间】:2012-06-19 20:30:55
【问题描述】:

我在硬盘的特定驱动器中有一些照片,这些照片都有一个*.jpg 扩展名和数字名称。

例如:1.jpg , 2.jpg , 5.jpg , ...

我正在尝试将这些照片插入到具有此架构的表中:

CREATE TABLE Employees
(
    Id int NOT NULL,
    Photo varbinary(max)NULL
)

第一步,我不知道这有什么问题:

DECLARE @i INT
SET @i = 1
WHILE (@i <=100)
    BEGIN
        INSERT INTO Employees (Id, Photo) 
            SELECT @i,  BulkColumn 
            FROM Openrowset( Bulk 'C:\Pictures\'+convert(nvarchar(5),@i)+'.jpg', Single_Blob) as EmployeePicture
            SET @i = @i + 1
    END
GO

因为我得到一个错误:

“+”附近的语法不正确

【问题讨论】:

    标签: sql-server tsql bulkinsert varbinarymax


    【解决方案1】:

    OPENROWSET(BULK ... ) 的 'data_file' 参数必须是带引号的字符串文字,不能是变量或表达式。恐怕你必须使用动态 sql。

    DECLARE @i INT
    SET @i = 1
    WHILE (@i <=100)
    BEGIN
        DECLARE @SQL VARCHAR(MAX)
        SELECT @SQL = 'INSERT INTO Employees (Id, Photo)
            SELECT ' + convert(nvarchar(5), @i) + ', BulkColumn FROM OpenRowSet ( Bulk ''C:\Pictures\' +
            convert(nvarchar(5), @i) + '.jpg'', Single_Blob) as EmployeePicture'
    
        exec (@SQL)
    
        SET @i = @i + 1
    END
    GO
    

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 2017-11-17
      • 2020-03-01
      • 2018-10-28
      • 2017-04-30
      • 1970-01-01
      • 2021-11-06
      • 2021-04-19
      • 2011-05-28
      相关资源
      最近更新 更多