【转】Oracle中如何用一条SQL快速生成10万条测试数据

转自http://blog.csdn.net/welken/article/details/4971887

做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法。

产生测试数据的SQL如下:

SQL> select rownum as id,
  2                 to_char(sysdate + rownum / 24 / 3600, ‘yyyy-mm-dd hh24:mi:ss‘) as inc_datetime,
  3                 trunc(dbms_random.value(0, 100)) as random_id,
  4                 dbms_random.string(‘x‘, 20) random_string
  5            from dual
  6          connect by level <= 10;
 
        ID INC_DATETIME         RANDOM_ID RANDOM_STRING
---------- ------------------- ---------- --------------------------------------------------------------------------------
         1 2009-12-08 19:43:14         76 GWMU280MIVBKKOCZV620
         2 2009-12-08 19:43:15         34 GNV88O6TDHD3TWC5GWI5
         3 2009-12-08 19:43:16         77 LI6H4O5IAHQIMO4B0WMH
         4 2009-12-08 19:43:17         99 LP7XP49I0YOJIYSJDQZO
         5 2009-12-08 19:43:18         55 V3284X9RXW4UZI8BQMO3
         6 2009-12-08 19:43:19         16 T0OA52UAOGHL1TT46H25
         7 2009-12-08 19:43:20         61 UY6RUOF7HWTO86942FLP
         8 2009-12-08 19:43:21         25 JYXO4OPEW8J1CKVCPDJR
         9 2009-12-08 19:43:22         10 DONU6W9QVQM3KJ2UG8LO
        10 2009-12-08 19:43:23         76 J8DJLVNOUIZDXE4UXUJG
 
10 rows selected

上面SQL是利用了Oracle数据库语法的几个实用小技巧实现的:
1、利用Oracle特有的“connect by”树形连接语法生成测试记录,“level <= 10”表示要生成10记录;
2、利用rownum虚拟列生成递增的整数数据;
3、利用sysdate函数加一些简单运算来生成日期数据,本例中是每条记录的时间加1秒;
4、利用dbms_random.value函数生成随机的数值型数据,本例中是生成0到100之间的随机整数;
5、利用dbms_random.string函数生成随机的字符型数据,本例中是生成长度为20的随机字符串,字符串中可以包括字符或数字。

ok,那要生成10万条测试记录表可以用如下SQL:

create table myTestTable as 
select rownum as id,
               to_char(sysdate + rownum/24/3600, ‘yyyy-mm-dd hh24:mi:ss‘) as inc_datetime,
               trunc(dbms_random.value(0, 100)) as random_id,
               dbms_random.string(‘x‘, 20) random_string
          from dual
        connect by level <= 100000;

时间: 2025-01-31 06:44:18

【转】Oracle中如何用一条SQL快速生成10万条测试数据的相关文章

SQLServer如何快速生成100万条不重复的随机8位数字

最近在论坛看到有人问,如何快速生成100万不重复的8位编号,对于这个问题,有几点是需要注意的: 1.    如何生成8位随机数,生成的数越随机,重复的可能性当然越小 2.    控制不重复 3.    考虑性能 针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导 */ USE tempdb GO --创建测试表 CREATE TABLE tb(id char(8)) --创建用于自动过滤重复值的唯一索引 CREATE UNIQUE INDEX IX_tb ON tb(id) W

用一条SQL语句取出第 m 条到第 n 条记录的方法

原文:用一条SQL语句取出第 m 条到第 n 条记录的方法   --从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本) SELECT TOP n-m+1 * FROM Table WHERE (id NOT IN (SELECT TOP m-1 id FROM Table )) --从TABLE表中取出第m到n条记录 (Exists版本) SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists (Select * From 

通过数组方式向Oracle大批量插入数据(10万条11秒)

1.创建数据库Person CREATE TABLE Person( id number, name nvarchar2(200) , age number , sex nvarchar2(200) , password nvarchar2(200) ) 2.在数据库建立一个type,对应JAVA端要传入的对象结构: CREATE OR REPLACE TYPE BUT_UKBNOV_CTC_ORDER_REC1 AS OBJECT ( id number, name nvarchar2(200

一般数据存储和批量数据存储比较--10万条数据

一.在数据库中建立Student表 二.创建10万条数据 创建数据 三.创建一般数据存储方法 public static void SaveGeneral(DataTable dt) { string strConn = @"Data Source=.;Initial Catalog=Test;Integrated Security=True"; SqlConnection conn = new SqlConnection(strConn); conn.Open(); SqlComma

《一出好戏》讲述人性,使用Python抓取猫眼近10万条评论并分析,一起揭秘“这出好戏”到底如何?

黄渤首次导演的电影<一出好戏>自8月10日在全国上映,至今已有10天,其主演阵容强大,相信许多观众也都是冲着明星们去的.目前<一出好戏>在猫眼上已经获得近60万个评价,评分为8.2分,票房已破10亿. 作者本人(汤小洋 )今天也走进了电影院,对这部电影做了亲身的观看,看完后的感觉是有些许失落的,本以为是喜剧片,结果发现笑点一般,从搞笑的角度来看,不如<西虹市首富>,影片更多的是反映人类本性的一部电影,不应当做喜剧片来看,影片中展现的人与人之间的关系倒是值得我们去深思.

java 批量插入10万条数据

for (int i = 0; i < 100000; i++) { dbHelper.insert("INSERT aaa(name) Values ('1')"); } 运行时间==780450ms conn = getConn(); // JAVA默认为TRUE,我们自己处理需要设置为FALSE,并且修改为手动提交,才可以调用rollback()函数 conn.setAutoCommit(false); st = conn.createStatement(); long s

C# DataGirdView 填充10万条数据

DataGirdView 填充10万条数据,用以下方式基本耗时 2秒 DataTable dt = new DataTable();DataColumn dc1 = new DataColumn("Column1");DataColumn dc2 = new DataColumn("Column2");DataColumn dc3 = new DataColumn("Column3");dt.Columns.Add(dc1);dt.Columns

从表保存了主表的id,以分号分隔,怎么样用一条sql搞定主表满足条件的查询? 不希望单独写存储过程,或者后台拆成int后传进来,就一条sql 搞定,一条

问题描述:在数据库的从表里边用;号保存了主表的id,主表id 整型,从表字段string类型,希望写一条sql 查询出主表里边满足条件的数据,不希望通过写独立的存储过程或者后台代码把id 拆开后再查,就一条sql 解决所有问题,终于找到解决办法. 主表数据: 从表数据: 1. 在sql数据库建立SplitStringToTable函数 1 USE [AutoRent] 2 GO 3 4 /****** Object: UserDefinedFunction [dbo].[SplitStringT

性能优化:虚拟列表,如何渲染10万条数据的dom,页面同时不卡顿

最近做的一个需求,当列表大概有2万条数据,又不让做成分页,如果页面直接渲染2万条数据,在一些低配电脑上可能会照成页面卡死,基于这个需求,我们来手写一个虚拟列表 思路 列表中固定只显示少量的数据,比如60条 在列表滚动的时候不断的去插入删除dom startIndex.endIndex,不断的改变这个值来获取最新的显示列表 paddingTop.paddingBottom撑开容器的滚动区域 首先看一下当直接插入2万条列表时,页面的性能 可以看到火焰图中已经有了红色的部分了,dom渲染也耗时也有1s