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

来源:互联网 发布:淘宝新店会有人买吗 编辑:程序博客网 时间:2024/05/17 07:35
从sql server 中导入到oracle中的表为什么在查询的时候一定得将表名用双引号(“”)扩起来才能识别?

从sql server 导入到oracle之后,oracle不识别小写表名。

出处:http://www.cnblogs.com/tippoint/archive/2012/11/07/2758855.html 

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

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

批量修改表名:

declare @sql varchar(300)--,@rowcount varchar(10),@dyncnum int    declare @tablename varchar(100)    declare cursor1 cursor for             select name  from sysobjects  where xtype = 'u'  order by name                   open cursor1                           fetch next from cursor1 into @tablename    while @@fetch_status=0               begin        set @sql='sp_rename '''+@tablename+''','''+upper(@tablename)+''''        print @sql         --exec(@sql)                     fetch next from cursor1 into @tablename    end    close cursor1                       deallocate cursor1
批量修改字段名代码:

declare @sql varchar(300)    declare @tablecolumnname varchar(100), @columnname varchar(100)    declare cursor1 cursor for             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                    open cursor1                           fetch next from cursor1 into @tablecolumnname,@columnname    while @@fetch_status=0               begin        set @sql='sp_rename '''+@tablecolumnname+''','''+upper(@columnname)+''',''column'''        --print @sql         exec(@sql)                     fetch next from cursor1 into @tablecolumnname,@columnname    end    close cursor1                       deallocate cursor1

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

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

修改表名:

select 'alter table "'||table_name||'" rename to '||upper(table_name)||';' from user_tables where table_name<>upper(table_name);
修改字段名:

select 'alter table '||table_name||' rename column "'|| column_name ||'" to '||upper(column_name)||';' 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; 








0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我的天猫积分不让换券了怎么办 微信手机话费充错了怎么办 自己进货在淘宝卖被投诉假货怎么办 京东买的电器售后后服务差怎么办 京东到家申请退款卖家不处理怎么办 天猫买了假货商品下架了怎么办 淘宝本地生活服务不能入驻了怎么办 淘宝店铺名在电脑上搜索不到怎么办 已经将退货寄回店家硬说没有怎么办 微信申诉账号短信验证失败怎么办 京东账号换手机号收不到短信怎么办 我的手机收不到短信通知怎么办? 淘宝卖家发货物流单号写错了怎么办 商铺买东西不给调换大小怎么办 圆通快递物流信息一直没更新怎么办 中通快递三天没更新物流信息怎么办 快递已经到了物流信息不更新怎么办 天天快递查询不更新物流信息怎么办 买车下个月分期全部付清怎么办手续 天猫客服介入以后商家不退款怎么办 淘宝上买代购奢侈品买到假货怎么办 淘宝退货卖家收到货拒绝退款怎么办 没收到货但申请了退货退款怎么办 小米商城预约中德手机没货怎么办 电脑用百度网盘下载速度超慢怎么办 ios网盘下载速度太慢怎么办 小米手机4x卡机了怎么办 小米手机4x屏幕点不动了怎么办 苹果手机连接u盘没反应怎么办 苹果官网储蓄卡分期额度不够怎么办 京东买东西发票信息填写错了怎么办 华为v9手机激活密码忘了怎么办 公司报销发票纸质的丢了怎么办 在京东上买的小天才手表坏了怎么办 美亚买东西过几天降价了怎么办 天猫买东西退款后又不想退了怎么办 自己写错了地址快递被签收了怎么办 在天猫购买东西不发货怎么办 在天猫买了东西不给我发货怎么办 天猫退货卖家收到货不退款怎么办 唯品会的账号找不回来了怎么办