2012-03-24 9 views
1

私は、実動データベースinOracle 11g - スキーマ全体を持っています。 リレーションを維持したままテストデータ(すべての値が文字化けしている)を生成するにはどうすればよいですか?(文字列の文字列のみがIDや数字ではなく文字化けします) データジェネレータのようにこれを行うツールがありますか?事前oracleで実際のソース・データベースからテスト・データを生成する方法11g

答えて

0

を見ます単純なSQLクエリを使用してデータを生成します。例えば以下の質問を考えてみましょう。

SELECT 'ORACLE' || ROWNUM ID, 
     DEPT_CD, 
     ACCT_NO, 
     TITLE, 
     NO_OF_SUBORDN, 
     ANNUAL_SALARY, 
     CUBICLE_ID, 
     DATE_OF_JOINING, 
     V_CCY_CODE 
    FROM (SELECT TRUNC(DBMS_RANDOM.VALUE(100, 1000)) DEPT_CD, 
       TRUNC(DBMS_RANDOM.VALUE(0, 20)) NO_OF_SUBORDN, 
       TRUNC(DBMS_RANDOM.VALUE(20000, 200000), 2) ANNUAL_SALARY, 
       DBMS_RANDOM.STRING('U', 10) || '/' || 
       TRUNC(DBMS_RANDOM.VALUE(100, 1000)) CUBICLE_ID, 
       SYSDATE + DBMS_RANDOM.VALUE(-365 * 15, -1) DATE_OF_JOINING 
      FROM DUAL 
     CONNECT BY LEVEL <= 100) TBL1 
    LEFT OUTER JOIN (SELECT DISTINCT V_CCY_CODE 
        FROM DIM_CURRENCY 
        ORDER BY DBMS_RANDOM.VALUE) TBL2 ON 1 = 1 
    LEFT OUTER JOIN (SELECT DISTINCT ACCT_NO, TITLE 
        FROM DIM_ACCOUNT 
        ORDER BY DBMS_RANDOM.VALUE) TBL3 ON 1 = 1 
ORDER BY DBMS_RANDOM.VALUE; 

このクエリでは、ランダムデータはTBL1のDBMS_RANDOMパッケージを使用して生成されます。 TBL2およびTBL3のように、デカルトテーブルまたはルックアップテーブルのデータをデカルト結合を使用して取り込むことができます。

注:他のテーブルとのデカルト結合が行われているので、得られるデータセットが膨大になるので、TBL1のLEVELを最小に保ちます。

関連する問題