2017-05-30 101 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; 
相关问题