使用ssis导出Varbinary(max)列

时间:2012-10-03 16:18:32

标签: ssis

我们有一个带有varbinary(max)列的表,该列用于应用程序中的Rich文本字段(不用于附加文档)。 我正在尝试通过一个非常简单的ssis包将列导出到一个平面文件中。 我的包中包含oledb cource和flat file destination。

当我打开平面文件输出时,我惊讶地发现数据被截断为255个字符,您是否知道如何完全导出所有数据?

请求帮助。

1 个答案:

答案 0 :(得分:3)

在等待您打算如何使用它的同时,我建议您查看Export Column Transformation。在这个问题上也有类似需求 Using SSIS to extract a XML representation of table data to a file

我发布了一个快速示例,说明了如何进行导出varbinary数据。以下查询将某些字符串连接在一起,然后将它们转换为varbinary(max)。它还会生成第二列,这将是使用的输出文件。

WITH STARTER(starter) AS
(
    -- some simple data
    SELECT 'a'
    UNION ALL SELECT 'b'
    UNION ALL SELECT 'c'
)
,  VCM(longenough) AS
(
    SELECT
        CAST(REPLICATE(T.starter, 8000) AS varchar(max))
    FROM
        STARTER T
)
SELECT
    CAST(V0.longenough + V1.longenough AS varbinary(max)) AS BlobData
,   'C:\ssisdata\filename.' + CAST(row_number() OVER (ORDER BY (SELECT NULL)) AS varchar(10)) + '.txt' AS FileName
FROM
    VCM V0
    CROSS APPLY
    VCM V1;

配置SSIS非常简单。我使用上面的查询作为我的来源。 Simple data flow

我确保元数据看起来像预期的那样 - 是的,BLobData列是一个图像

metadata

配置导出列转换。如果该文件已存在,则任务将失败,如图所示。您可能需要选中“允许附加”或“强制截断”选项。

Export Column Transformation editor