2017-05-30 10 views
-1

oracleデータベース・テーブルに10億レコードを挿入する必要があります。 私は2列あります。 1つの列は、1,000,000,000まで続く一連の番号です。 2番目の列は、varchar2フィールドです... abc〜122〜373〜7777777〜5367 の形式です。それは最初の列は3つのランダムな文字とそれに続く '〜'、3つの乱数の後に '〜'、3つの乱数の後に '〜'、7つの乱数の後に '〜'、最後に4つの乱数〜によって '〜'。 そして、すべてのレコードが一意である必要があります。oracleデータベースに10億レコードを挿入したい

+1

問題は何ですか? https://docs.oracle.com/database/121/ARPLS/d_random.htm#ARPLS040をお読みください。 – OldProgrammer

答えて

1
create or replace function fn RETURN VARCHAR2 IS 
    label varchar2(24) := ''; 
BEGIN 
    -- abc~122~373~7777777~5367 
    select 
    chr(97 + floor(dbms_random.value*26)) || chr(97 + floor(dbms_random.value*26)) || chr(97 + floor(dbms_random.value*26))|| '~' 
    || rpad(floor(dbms_random.value*123),3, '9') || '~' 
    || rpad(floor(dbms_random.value*123),3, '8') || '~' 
    || rpad(floor(dbms_random.value*1234567),7, '6') || '~' 
    || rpad(floor(dbms_random.value*1234),4, '4') into label 
    from dual ; 

    RETURN label; 
END; 

となり、次のようにn回呼び出すとテーブルを作成できます。

create table testtable as select fn from dual connect by level <= 1000000000; 
関連する問題