ORACLE 批量插入数据,批量复制表结构

ORACLE批量插入数据: 

--插数据
DECLARE
  --声明函数
  v_i       INT := 1; --循环的次数
  v_counter INT := 1; --控制提交行数
  v_loop    VARCHAR2(30); --临时变量,组装字段内容
BEGIN
  WHILE (v_i <= 1000) LOOP
    --设置loop循环
    v_loop := LPAD(TO_CHAR(v_i), 6, '0'); --左填充 0
    INSERT INTO TABLE_NAME
      (ID, COLUMN_A, COLUMN_B, COLUMN_C, COLUMN_D)
    VALUES
      (SYS_GUID(), SYSDATE, 'TEST' || v_loop, 'TEST', 'TEST');
    IF v_counter = 100 --每次提交100个
    THEN
      v_counter := 0;
      COMMIT;
    END IF;
    v_i       := v_i + 1; --循环变量加1
    v_counter := v_counter + 1;
  END LOOP;
  COMMIT; --循环执行完后进行提交
END;

 

 ORACLE批量复制表结构: 

--复制表结构
DECLARE
  v_temp_table VARCHAR2(200) := 'TABLE_NAME_BAK';
  v_i          INT := 1; --循环的次数
  v_loop       VARCHAR2(200); --表名
  v_temp       VARCHAR2(200) := ' AS SELECT * FROM TABLE_NAME WHERE 1 != 1';
BEGIN
  WHILE (v_i <= 5) LOOP
    v_loop := v_temp_table || LPAD(TO_CHAR(v_i), 4, '0');
    EXECUTE IMMEDIATE 'CREATE TABLE ' || v_loop || v_temp;
    DBMS_OUTPUT.PUT_LINE('CREATE TABLE ' || v_loop || v_temp);
    v_i := v_i + 1; --循环变量加1
  END LOOP;
END;

输出的sql如下图所示:

 

遇到的坑:

复制表结构时,表名不能过长,会报ORA-00972标识符过长的错误。 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值