2012-01-31 18 views
3

私たちは、php/mysqlで書かれたポータルとJava EEとOracleに基づくエンタープライズ・アプリケーションを持っています。最近、特定のUnicode文字(正確には0643)がテキスト列の中で不適切な(エンドユーザーによる不適切なデータ入力のため)無効で、別の文字(06A9)に変更する必要があることが判明しました。oracleの無効な文字を置換する(dmpファイルを編集する)

私は単純にテキストエディタの検索と置換ツールを使用してエクスポートファイルを変更しました。しかし、オラクルでは、dmpファイルはバイナリファイルであり、dmpファイルを編集する方法についてはわかりません。

どのように無効な文字を変更できますか?

すべてのテーブルのすべてのテキスト列を反復処理する方法はありますか? (私はそれを最後の手段として保存しました)

答えて

2

Oracleダンプファイルの編集は可能ですが実用的ではありません。あなたが入り込んで何かを変えることができたとしても、あなたはそれを破壊する危険性があります。そして、オラクルのサポートには感心します。 (例えば、this AskTom questionを参照)。

あなたはデータポンプを使用していて、データがあなたにある列(複数可)を知っている場合はデータをスキップするフライ、またはQUERYパラメータにそれを変更するREMAP_DATA parameterを使用することができるかもしれませんが、あなたがそのような状況にいるようには聞こえません。関連する列に一時的な制約を追加して値をブロックする可能性があるため、インポートすると影響を受ける行は拒否され(ログに記録されますが)、それは厄介で面倒です。

すべての表のすべての列をチェックする必要がある場合は、this linkが役立ちます。

+0

最後に、すべてのテーブルのすべての列をチェックしました! – danrah

関連する問題