代码之家  ›  专栏  ›  技术社区  ›  joshcomley

是否有可以用于将数据从“image”列迁移到“filestream”列的SQL查询?

  •  1
  • joshcomley  · 技术社区  · 15 年前

    我的SQL Express数据库空间不足,所以我要将繁重的数据从旧的“image”blob列迁移到SQL Server 2008中的新(varbinary)“filestream”列。

    我正准备编写一个应用程序来完成这项工作,但我认为有一种巧妙的方法可以用我没有想到的SQL来完成这项工作。

    有人知道在SQL中用简单的方式实现这一点的方法吗?

    假设我有下表:

    表:[数据]
    列:id int
    列:imagefile image
    列:filestreamfile varbinary(max)filestream default(0x)

    显然,当imagefile是旧列时,我希望迁移到filestreamfile

    2 回复  |  直到 15 年前
        1
  •  0
  •   Scott Ivey    15 年前

    您是否尝试在更新中将图像强制转换为varbinary(max)?

    UPDATE [Data]
    SET    [FileStreamFile] = CAST([ImageFile] AS VARBINARY(MAX))
    

    基于 this MSDN page ,看起来应该可以。

        2
  •  0
  •   Garrett    15 年前

    确定你 enable the FILESTREAM feature .

    您需要根据下面的代码创建一个支持文件流的表( from MSDN ):

    CREATE TABLE Archive.dbo.Records
    (
        [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE, 
        [SerialNumber] INTEGER UNIQUE,
        [Chart] VARBINARY(MAX) FILESTREAM NULL
    )
    GO
    

    看起来事情是这样的 pretty transparent 之后——也就是说,添加文件流是由SQL Server处理的,而您只需付出最少的努力。例如:

    INSERT INTO Archive.dbo.Records
        VALUES (newid (), 3, 
          CAST ('Seismic Data' as varbinary(max)));
    GO