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如下图所示:

ORACLE 批量插入数据,批量复制表结构_第1张图片

 

遇到的坑:

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

 

你可能感兴趣的:(ORACLE 批量插入数据,批量复制表结构)