• 批量将Oracle里的表名和列名改为大写


    有时候我们需要从SQL Server数据库导入一些表数据到Oracle数据库。

    当数据导入成功后却发现按字段进行查询却老是提示列不存在。

    这时就需要我们将表名和字段名批量修改为大写方式。

    存储过程如下:

    create or replace procedure PD_BATCHRENAMETOUPPER
    AS
    mysql varchar2(1000);
    cursor cur is select table_name from user_tables where table_name<>upper(table_name);
    BEGIN
       --批量更新表名
       FOR row IN cur LOOP
         mysql:='alter table "'||row.table_name||'" rename to '||upper(row.table_name);
         dbms_output.put_line(mysql);
         execute immediate mysql;
       END LOOP;
       --批量更新列名
       FOR cl IN (SELECT table_name,column_name from user_tab_columns WHERE column_name<>upper(column_name) and upper(column_name) not in('SIZE','CHECK'))
       LOOP
           mysql:='alter table '||cl.table_name||' rename column "'|| cl.column_name ||'" to '||upper(cl.column_name);
           dbms_output.put_line(mysql);
           execute immediate mysql;
       END LOOP;
    END;

    执行存储过程即可:

    begin
     PD_BATCHRENAMETOUPPER();
    end;

    注意:有时候可能字段名是一些关键字,导致执行失败,可以根据错误提示将关键字在存储过程中进行过滤排除,然后重新编辑存储过程再次执行即可。

  • 相关阅读:
    正则表达式
    navicat 远程连接mysql
    配置网络
    swoole 定时器
    goroutine调度源码阅读笔记
    Golang GC 算法
    git常用操作合集
    utf8和utf8mb4的区别
    正则表达式忽略分组顺序匹配(前瞻、后顾、负前瞻、负后顾的应用)
    goroutine上下文切换机制
  • 原文地址:https://www.cnblogs.com/beijia/p/oracle_rename.html
Copyright © 2020-2023  润新知