DataStage 作业写入零而不是文件值

问题描述 投票:0回答:1

我在 DataStage 并行作业中遇到问题,无法写入 txt 文件的列的正确值。它在每条记录中写入 0,而不是文件中包含的值。

Job 的结构非常简单:Sequential File -> Transformer -> Oracle Connector。

  • 我可以查看顺序文件中的数据,一切似乎都是正确的。列被定义为 varchar 而不指定长度。
  • 变压器阶段不使用任何逻辑,但它将两列的数据类型从 varchar 转换为 numeric。我没有使用任何函数进行转换,我只是更改输出链接中的数据类型。
  • 连接器只需将数据插入表中即可。

我尝试做一个更简单的工作,从文件中提取数据并将其写入另一个文件,它成功了。这让我认为问题出在变压器阶段。我以为是由于上面提到的两个字段从 varchar 转换为 numeric 造成的,但问题只与其中之一相关。

起点是这样的:

列 1;列 2;列 3;列 4 123;"abc";123;123 123;"abc";123;123 123;"abc";123;123 123;"abc";123;123 123;"abc";123;123

并且插入到表中时输出应该完全相同。相反,结果是

列 1;列 2;列 3;列 4 123;"abc";123;0 123;"abc";123;0 123;"abc";123;0 123;"abc";123;0 123;"abc";123;0

预先感谢任何愿意帮助我的人。

text-files datastage oracle
1个回答
0
投票

如果没有看到工作的所有细节,很难说 - 但 0 是数字数据类型的默认值,如果列定义为 NOT NULL,则会设置它。 如果您想更改数据类型,建议显式转换。

另一个问题可能是行末尾的空白,这也会弄乱数据类型。

您可以在转换器和数据库目标之间添加一个查看阶段,以查看数据在 DataStage 中的外观,并从中继续调试。

© www.soinside.com 2019 - 2024. All rights reserved.