oracle 自动生成填充数据

发布时间 2023-03-30 17:44:20作者: vx_guanchaoguo0

Oracle提供的数据生成工具(Data Generator)

建表语句

CREATE TABLE "FDM"."HYRK_GIM_RENKOU" 
   (	"XM" VARCHAR2(200), 
	"SFZH" VARCHAR2(50), 
	"LXFS" VARCHAR2(50), 
	"ZY" VARCHAR2(500), 
	"XJJDXZ" VARCHAR2(500), 
	"ISDELETE" NUMBER(1,0), 
	"ID" VARCHAR2(50)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "HYRK"

也可以使用 DUAL表

INSERT INTO HYRK_GIM_RENKOU(XM, SFZH, LXFS, ZY, XJJDXZ, ISDELETE, ID)
  SELECT 
      '张三' || LEVEL, -- 姓名
      '450202199A' || LPAD(LEVEL, 4, '0') || '1234', -- 身份证号
      '13800138000' || LPAD(LEVEL, 2, '0'), -- 联系方式
      '软件工程师', -- 职业
      '广东省深圳市南山区学府路XXXX号', -- 现居地址
      0, -- 是否删除
      'ID-' || LPAD(LEVEL, 2, '0') -- 编号
  FROM DUAL
  CONNECT BY LEVEL <= 10;

DUAL表说明

  • DUAL是Oracle数据库中的一个伪表(Pseudo-Table),专门用于在SQL语句中进行单行计算,不存储任何实际数据,也不与其他表进行关联。DUAL表只有一列,名为DUMMY,其类型为VARCHAR2(1),包含一个值“X”。
  • DUAL表常常用于进行常量计算、日期计算、字符串拼接等操作,也可以用于生成序列、测试函数和存储过程等。例如,在进行查询操作时,可能需要通过DUAL表来生成一个常量结果集:

LEVEL 表说明

  • CONNECT BY LEVEL是Oracle数据库中一个查询语句中的连接关键字,用于在查询结果集中生成序列号或层次结构数据。其中,LEVEL是Oracle内置伪列,表示当前行在树状结构中的层次(从根节点开始递增)。例如:
SELECT LEVEL, 'Hello, World!' AS MESSAGE FROM DUAL
CONNECT BY LEVEL <= 3;

  • 其中,使用CONNECT BY LEVEL <= 3来指定查询的层数为3,因此查询结果中包含3行数据,LEVEL分别为1、2、3,MESSAGE均为“Hello, World!”。
  • 在生成填充数据时,CONNECT BY LEVEL也常常被用于生成指定数量的重复数据。例如,通过CONNECT BY LEVEL <= 10可以生成一个包含10行数据的结果集,用于向表中插入10条模拟数据。此时,可以在SELECT语句中使用LEVEL来生成唯一的序列号或编号,以区分不同的数据记录。