用于删除特殊字符的IBM datastage 8.7脚本oracle 11g

时间:2015-12-24 02:07:34

标签: etl datastage

我想知道是否需要在Datastage端和/或Oracle 11g DB端实现解决方案来解决描述中存在非ascii字符的问题。由于数据库使用不同的字符集,因此将一个集合转换为另一个集合偶尔会将单个非ascii字符转换为多个字符,从而导致截断错误。

示例说明 “:¿这个日期到底是什么日子?¿xxxxx:¿星期三,所以它会......” “:昨天不得不去看医生.xxxxxx:¿我只是让你说出你的”

理想情况下(长期而言)我想用相应的字符替换,即某些扩展引号应该成为常规引用。

短期内,我编写了一个示例脚本,基本上用空格替换所有特殊字符 -

UPDATE rcmain.rc_description
SET    desc_description  = REPLACE(desc_description, CHR(191), ' ')
WHERE  desc_description LIKE '%' || CHR(191) || '%'

从上面的脚本我创建了一个DataStage“ctlCleanseSourceFile”作业,该作业调用UNIX shell脚本“Replace_extended_characters.sh”来从XML文件中去除特殊字符。

这可以在XML文件合并到单个文件后完成。

修改其中一个附加的示例文件以创建shell脚本。

它应该:在样本中使用sed语句,在替换之前存储原始文件的备份。将其保存到与运行&的其他文件相同的存档目录中。如果可能,报告替换的字符。

是否有更好的方法来处理这种情况,而不是在描述字段中使用空格。

“长篇大论道歉”

1 个答案:

答案 0 :(得分:0)

道歉,这是一个快速反应;

您的NLS设置是什么?

我有一个问题,比如你自己阅读XML并将源阶段NLS更改为Windows 1252解决了我遇到的'无效字符'问题(文件来源是Windows服务器,但Datastage是在Unix上,所以使用UTF-8)