我在 DataStage 并行作业中遇到问题,无法写入 txt 文件的列的正确值。它在每条记录中写入 0,而不是文件中包含的值。
Job 的结构非常简单:Sequential File -> Transformer -> Oracle Connector。
我尝试做一个更简单的工作,从文件中提取数据并将其写入另一个文件,它成功了。这让我认为问题出在变压器阶段。我以为是由于上面提到的两个字段从 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
预先感谢任何愿意帮助我的人。
如果没有看到工作的所有细节,很难说 - 但 0 是数字数据类型的默认值,如果列定义为 NOT NULL,则会设置它。 如果您想更改数据类型,建议显式转换。
另一个问题可能是行末尾的空白,这也会弄乱数据类型。
您可以在转换器和数据库目标之间添加一个查看阶段,以查看数据在 DataStage 中的外观,并从中继续调试。