我们有一个用 php/mysql 编写的门户网站和一个基于 Java EE 和 Oracle 的企业应用程序。最近我们发现文本列中的某个Unicode字符(准确的说是0643)是无效的(由于最终用户输入的数据不当),必须更改为另一个字符(06A9)。
在 MySQL 中,我只是使用文本编辑器的查找和替换工具更改了导出文件。但是在oracle中,dmp文件是一个二进制文件,我不知道如何编辑dmp文件。
如何更改无效字符?
是否有替代方法来遍历所有表中的所有文本列? (我已将其保存为最后的手段!)
最佳答案
编辑 Oracle 转储文件可能是可行的,但不切实际;即使您可以进入并更改某些内容,您也有损坏它的风险,而且我怀疑 Oracle 支持人员不会对此印象深刻。 (参见 this AskTom question 示例)。
如果您正在使用数据泵并且知道数据在哪一列,您可能能够使用REMAP_DATA
parameter即时更改它,或 QUERY
参数跳过数据,但听起来您并不处于那种情况。您可能会向相关列添加临时约束以阻止该值,因此导入会拒绝(并记录)受影响的行,但这是痛苦和困惑的。
如果您确实必须检查所有表的所有列,this link可能会有帮助。
关于oracle - 替换oracle中的无效字符(通过编辑dmp文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9075253/