我们有一个带有varbinary(max)列的表,该列用于应用程序中的Rich文本字段(不用于附加文档)。 我正在尝试通过一个非常简单的ssis包将列导出到一个平面文件中。 我的包中包含oledb cource和flat file destination。
当我打开平面文件输出时,我惊讶地发现数据被截断为255个字符,您是否知道如何完全导出所有数据?
请求帮助。
答案 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非常简单。我使用上面的查询作为我的来源。
我确保元数据看起来像预期的那样 - 是的,BLobData列是一个图像
配置导出列转换。如果该文件已存在,则任务将失败,如图所示。您可能需要选中“允许附加”或“强制截断”选项。