【问题标题】:How to load a document(text,csv,excel) or BLOB file into a varbinary(MAX) database column using SSIS如何使用 SSIS 将文档(文本、csv、excel)或 BLOB 文件加载到 varbinary(MAX) 数据库列中
【发布时间】:2019-12-04 02:16:55
【问题描述】:

我尽我所能寻找任何资源,但我只看到将图像加载到 SQL Server 中的varbinary(max) 列的示例。我想将实际文档转换为varbinary 格式,并将它们加载到数据库列中。

我会担心以后转换它们。我知道你会说“当你可以只存储文件的目录并从服务器上的文件位置检索文件时,你为什么要这样做?”这是因为我们正在创建一个用于发送通知的框架,而我们正在加载的 BLOB 文件将是文档 - 或任何类型的附件。这正是我老板想要的方式。

CREATE TABLE [dbo].[AEI_Notification_Artifacts]
(
    [artifact_id] [BIGINT] IDENTITY(1,1) NOT NULL,
    [notification_id] [BIGINT] NOT NULL,
    [artifact] [VARBINARY](MAX) NULL,

    CONSTRAINT [PK_AEI_Notification_Artifacts] 
        PRIMARY KEY CLUSTERED ([artifact_id] ASC)
                    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                          IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                          ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

我正在尝试通过平面文件和导入列任务加载文件并在 SSIS 中转换它们......但我发现的资源仅适用于图像。我想我需要创建一个手动复杂的脚本来转换数据然后流式传输。

【问题讨论】:

  • 不应该太复杂。创建一个存储过程来插入您的数据。向 SSIS 添加脚本任务,确保它可以访问您正在加载的文件名。将文件内容读入 byte[] 并调用 sproc 插入数据,将 byte[] 作为 varbinary 参数传递。

标签: c# sql ssis blob


【解决方案1】:

我们无需在 SSIS 中使用脚本任务即可处理此问题。

这是一个小例子。 在您的情况下,您可以将 Source 组件替换为您的 FlatFile 源。 FlatFile 源应输出一列,该列是您要导入的文件的文件路径(例如:C:\support\yourfile.bin)。

接下来,我们将配置 Import Column 组件:

首先让我们选择要用作输入的列,这应该是上面的文件路径列。

接下来我们需要添加我们要导入的列。 首先选择导入列输出/输出列,然后按Add Column 按钮。 接下来将DataType 设置为[DT_IMAGE](写入目的地时这将转换为varbinary(MAX))。 最后记下 LineageID。

现在回到导入列 Input\Input Columns\FilePath。选择该列,然后在 Customer Properties 下将 FileDataColumnID 设置为我们之前记下的 LineageID。

现在您应该已准备好将数据放入您选择的目的地。

[编辑:错别字]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    相关资源
    最近更新 更多