【问题标题】:IBM datastage 8.7 script to remove special characters oracle 11gIBM datastage 8.7 脚本删除特殊字符 oracle 11g
【发布时间】: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 语句,在替换之前存储原始文件的备份。将其保存到与其他文件相同的存档目录中,以便在可能的情况下运行并报告替换的字符。

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

“为长篇道歉”

【问题讨论】:

    标签: etl datastage


    【解决方案1】:

    抱歉,这是一个快速响应;

    您的 NLS 设置是什么?

    我在读取 XML 并将源阶段 NLS 更改为 windows 1252 时遇到了问题,这解决了我遇到的“无效字符”问题(文件源是 windows 服务器,但 Datastage 在 Unix 上,因此使用 UTF-8)

    【讨论】:

    • 感谢您的回复和建议,将尝试将设置更改为 windows 1252,看看是否有任何魅力。
    • 嗨,Dan,您能否告知对基础数据库所做的更改是否会立即影响数据,或者我是否需要重新加载数据才能让新设置对其进行处理?
    • Abby,我不需要只更改 Datastage 中的源节点的数据库,更改 NLS 设置意味着它可以为我正确读取 XML。您能否告知源节点是什么(可能是 oracle 连接器?)
    • 嗨,Dan,当我们读取 XML 文件,然后跟踪通过 STAGING 到 PRESENTATION 的所有阶段传递的数据时,我们确实看到了正确的数据解释。没有有趣的字符被替换。但是,从呈现到数据库是问题所在。所以我正在考虑运行一个 unix 脚本来用 替换所有有趣的字符......看不到有任何其他选择。你的想法?
    • Abby,为什么不在交付节点之前使用转换器阶段来替换这些不一致的字符(因为它包含在作业中,不需要外部脚本)。我很想知道交付节点是什么,因为它可能是负载实用程序正在尝试转换传递的数据。
    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多