• SQLSERVER和ORACLE批量处理表名和字段名大写


    在sql移植到oracle过程中,都会遇到表名和字段名大写的问题,因为在oracle中默认表名和字段名都是大写的,虽然可以通过使用双引号的方式进行操作,如select * from "testtable"但是很多情况下,这样做的代价很大,因为很多程序的代码是早已经写好的,而要修改oracle系统配置又不安全,一个比较稳妥的办法是批量修改表名和文件名。

    先说在SQL中修改表名和字段名的办法:虽然在sql中默认是不区分表名和字段名的大小写的,但是通过sql的DTS进行数据导出导入的时候,如果表名和字段名是小写,那生成的代码中对应也是小写,反之亦然。因此通过此办法生成oracle数据表的时候就需要首先批量把sql中的表名和字段名都修改为大写,下面给出的是对应的代码。

    批量修改表名:

     1 declare @sql varchar(300)--,@rowcount varchar(10),@dyncnum int
     2     declare @tablename varchar(100)
     3     declare cursor1 cursor for         
     4     select name  from sysobjects  where xtype = 'u'  order by name               
     5     open cursor1                       
     6     fetch next from cursor1 into @tablename
     7     while @@fetch_status=0           
     8     begin
     9         set @sql='sp_rename '''+@tablename+''','''+upper(@tablename)+''''
    10         print @sql 
    11         --exec(@sql)             
    12         fetch next from cursor1 into @tablename
    13     end
    14     close cursor1                   
    15     deallocate cursor1

        批量修改字段名代码:

       

     1 declare @sql varchar(300)
     2     declare @tablecolumnname varchar(100), @columnname varchar(100)
     3     declare cursor1 cursor for         
     4     select b.name+'.['+a.name+']',a.name from syscolumns a  ,sysobjects b where a.id = object_id(b.name) and b.xtype = 'u' and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36                
     5     open cursor1                       
     6     fetch next from cursor1 into @tablecolumnname,@columnname
     7     while @@fetch_status=0           
     8     begin
     9         set @sql='sp_rename '''+@tablecolumnname+''','''+upper(@columnname)+''',''column'''
    10         --print @sql 
    11         exec(@sql)             
    12         fetch next from cursor1 into @tablecolumnname,@columnname
    13     end
    14     close cursor1                   
    15     deallocate cursor1

       还有一种情况就是,表已经导入到oracle中了,但是发现表名和字段名都是小写,需要在oracle中修改表名和字段名。

    这个时候,我们需要使用一种办法来帮我们自动生成修改的语句,然后copy出来执行就可以了。 

    修改表名:

    1 select 'alter table "'||table_name||'" rename to '||upper(table_name)||';' from user_tables where table_name<>upper(table_name);

    修改字段名:

    1 select 'alter table '||table_name||' rename column "'|| column_name ||'" to '||upper(column_name)||';'
    2 from user_tab_columns where column_name<>upper(column_name);

    这个时候,我们可以在sql plus或者toad等客户端工具中生成对应的alter语句,然后copy出来执行就ok了。

    引申一下,如果需要把oracle中的数据全部清空或者把表全部删除,也可以采用如上的方式

    --清除数据
    select 'TURNCATE table '||table_name ||';' from user_tables; 
    --删除表
    select 'drop table '||table_name ||';' from user_tables; 
  • 相关阅读:
    [杭电_HDU] 2013
    动态调整线程数的python爬虫代码分享
    wampserver 配置的几个坑(雾
    wampserver apache 403无权限访问 You don't have permission to access /index.html on this server
    [爬坑日记] 安卓模拟器1903蓝屏 没开hyper-v
    [单片机] ESP8266 开机自动透传
    [操作系统] 死锁预防和死锁避免
    [linux] 手机Deploy linux 桌面中文乱码
    XHTML基础
    JDBC_c3p0连接池
  • 原文地址:https://www.cnblogs.com/tippoint/p/2758855.html
Copyright © 2020-2023  润新知