0

我有一系列通过 Datastage 导入数据库的 CSV。我正在尝试使用 RCP 和模式文件来做到这一点。

我使用 CSV 随附的随附主表列表从 CSV 生成模式文件。

我遇到了一个问题。当我发现一个数字是特定表中的最后一列时,它就是模式文件中的最后一个条目。我的问题是空处理。CSV 以逗号分隔,字符串用双引号括起来,null 没有数据。

主列表将其中一些数字列标识为 number(),这表示输出的 oracle 描述。为此,我正在尝试这个:

:nullable decimal[38,9] { default=0, text }; 在此示例中,比例和精度默认为 38,9....除非在其他地方指定,例如十进制 [10,2]。

空条目导致此错误:验证导入/导出函数时:APT_GFIX_Decimal::validateParameters:十进制“文本”格式为可变长度,未指定外部长度;您可能应该指定适当的“宽度”属性;外部格式:{text, padchar=32, nofix_zero, precision=38, scale=9, round=trunc_zero, ascii}。[十进制/impexp.C:939]

所以我尝试了: :nullable decimal[38,9] { default=0, text, width=47 }; 在此示例中,比例和精度默认为 38,9。宽度是两个值的总和(38 + 9 = 47...除非在别处指定,例如十进制[10,2]。

我得到:ODBC_Connector_3,0:输入缓冲区溢出字段“”,偏移量:### [impexp/group_comp.C:6006]

最后,我完全按照它所说的做了: :nullable decimal[38,9] { default=0, text, padchar=32, nofix_zero, precision=, scale=, round=trunc_zero, ascii, width=47 } ; 在此示例中,比例和精度默认为 38,9。宽度是两个值的总和(38 + 9 = 47...除非在别处指定,例如十进制[10,2]。

第三次,我收到此错误:输入缓冲区溢出字段“”,偏移量:### [impexp/group_comp.C:6006]

有没有人遇到过这个?仅当十进制是表中的最后一列时才会发生这种情况。

我的记录设置是:{intact, final_delim=none, record_delim='\n', charset='UTF8', delim=','}

非常感谢。

4

1 回答 1

0

我遇到过同样的问题。我试图提出上述答案和问题中提到的解决方案。它没有用。结果,我的目标列有 - 小数点(14,10),即小数点前 4 位和小数点后 10 位。即使我在源中有实际数据,我在目标中也得到了空值。但问题是源在小数点前超过 4 位。我将目标和源列修改为十进制(16.10)。最重要的是,就像问题中提到的那样,当我们使用模式文件时,我们不应该将十进制列放在最后。我在源代码的最后放了一个字符串列,结合了这些和中提琴!我可以看到我的数据正确加载到目标中。

于 2021-01-29T17:46:12.433 回答