2017-05-30 100 views
-1

我必須在oracle數據庫表中插入10億條記錄。 我有2欄。 一列是一個後續的序列號,直到1,000,000,000 第二列是一個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; 
相關問題