【问题标题】:DT_TEXT concatenating rows on Flat File ImportDT_TEXT 在平面文件导入中连接行
【发布时间】:2012-08-23 12:40:45
【问题描述】:

我有一个导入 TSV 文件的项目,该文件的字段设置为文本流 (DT_TEXT)。

当我有被重定向的无效行时,我的无效行中的 DT_TEXT 字段将附加到第一个进行中的有效行。

这是我的测试数据:

制表符分隔的输入文件:("tsv IN")

CatID   Descrip
y   "desc1"
z   "desc2"
3   "desc3"

CatID 设置为整数 (DT_I8)

描述被设置为文本流 (DT_TEXT)

这是我的基本数据流任务:

(我很抱歉,直到我的代表超过 10 人才能发布图片:-/)

所以我的 2 个无效行被重定向,我的第 3 行指向成功, 但这是我的“成功”输出:

"CatID","Descrip"
"3","desc1desc2desc3"

这是使用 DT_TEXT 字段时的错误吗?我对 SSIS 相当陌生,所以也许我误解了文本流的使用。我选择使用 DT_TEXT,因为我遇到了 DT_STR 的截断问题。

如果有帮助,我的 tsv Fail 输出如下:

Flat File Source Error Output Column,ErrorCode,ErrorColumn
x   "desc1"
,-1071607676,10
y   "desc2"
,-1071607676,10

提前致谢。

【问题讨论】:

  • 您在使用 dt_str 时遇到了哪些错误?你的实际数据是什么样的?描述列中最长的字符串是什么?是否超过 50 个字符?

标签: ssis


【解决方案1】:

您应该尽量避免在 SSIS 字段中使用 DT_TEXT、DT_NTEXT 或 DT_IMAGE 数据类型,因为它们会严重影响数据流性能。问题是这些类型不是作为 CLOB(字符大对象),而是作为 BLOB(二进制大对象)。

参考见:

使用 DT_TEXT 您不能像从大型数组中那样只提取字符。此类型表示为字节数组,可以存储任何类型的数据,在您的情况下不需要这些数据,并且会在连接字段时产生问题。 (我在我的环境中重现了这个问题)

我的建议是坚持使用 DT_STR 进行描述,并为其提供较大的 OutputColumnWidth。使其足够大,以便在从源文件读取并对其进行测试时不会发生截断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多