我想在oracle数据库中插入十亿条记录

Posted

技术标签:

【中文标题】我想在oracle数据库中插入十亿条记录【英文标题】:I want to insert one billion records in the oracle database 【发布时间】:2017-05-30 17:07:45 【问题描述】:

我必须在 oracle 数据库表中插入十亿条记录。 我有 2 列。 一列是一个序列号,直到 1,000,000,000 第二列是 varchar2 字段...格式为 abc~122~373~7777777~5367 .即第一列必须包含 3 个随机字符,后跟 '~',然后是 3 个随机数,后跟 '~',然后是 3 个随机数,后跟 '~',然后是 7 个随机数,后跟 '~',最后是 4 个随机数通过'〜'。 而且我需要所有记录都是唯一的。

【问题讨论】:

好的,那么问题是什么?阅读docs.oracle.com/database/121/ARPLS/d_random.htm#ARPLS040 【参考方案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;

【讨论】:

以上是关于我想在oracle数据库中插入十亿条记录的主要内容,如果未能解决你的问题,请参考以下文章

处理数十亿条记录的推荐数据库类型

逐页读取Oracle表中的所有数据

如何使用mongo在sinatra的handsontable中轻松加载数十亿条记录?

删除范围内的十亿条记录与精确 ID 查找 MYSQL

将 s3 中跨 CSV 文件的数十亿条记录推送到 MongoDb

面试题之十亿条记录,怎么获取出现最多的前十个