【发布时间】:2016-01-04 07:12:03
【问题描述】:
我想知道是否需要在 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 语句,在替换之前存储原始文件的备份。将其保存到与其他文件相同的存档目录中,以便在可能的情况下运行并报告替换的字符。
有没有更好的方法来处理这种情况,而不是使用空间来描述字段。
“为长篇道歉”
【问题讨论】: