0

私はDB2 Express-Cを初めて使用し、すべてのテーブルを通過して、見つかった10桁の電話番号を変更(スクランブル、置換、ランダムなど)できるSQLステートメントをDB2で実行できるかどうか疑問に思っています。簡単に言えば、すべてのテーブルのすべてのフィールドでグローバル検索と置換を実行して、電話番号 (個人情報) を難読化します。

クライアントの DB2 データベース (17 個のテーブル) をソフトウェア ベンダーに渡してレポートを作成する必要がありますが、その過程で実際の電話番号が公開されないようにする必要があります。単一のテーブルを処理できる SQL ステートメントがあると確信しています (その後、DB2 コントロール センターに移動して 17 倍実行できます) が、送信する前にこの DB を「準備」するための迅速でクリーンな方法を探しています。

DB2 の達人に感謝します。

マイク

4

1 に答える 1

0

db2 で情報を隠したい場合は、次の関数を使用する必要があります。

  • 暗号化
  • DECRYPT_BIN
  • DECRYPT_CHAR
  • GETHINT

または、IBM Database Encryption Expert

関数はvarchar用で、int列があると思うので動作しません。

ただし、UDF を適用してカタログにクエリを実行することにより、さまざまなテーブルからすべての電話番号を非表示にすることができます。

たとえば、UDF (ユーザー定義関数) は、自分だけが知っている特定の番号で電話を乗算できます。次に、それを解読するには、同じ数で割る必要があります。

次に、この手順をすべてのテーブルに適用するには、カタログをクエリする必要があります。例えば、

select tabschema, tabname
from syscat.columns
where colname like 'PHONE%'

テーブルを確認したら、UDF でテーブルを更新できます。

select 'update ' || trim(tabschema) || '.' || trim(tabname) || ' set ' || trim(colname) || ' = myUDF(' || colname || ', 5) ;' from syscat.columns where colname like 'PHONE%'

5 が暗号化番号だとしましょう。

電話を非表示にするには、出力を実行するだけです。

于 2013-08-16T08:59:28.140 に答える