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

SQLSERVER和ORACLE批量处理表名和字段名大写,第1张

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

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

 

 

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

批量修改表名:

declare@sql varchar(300)--,@rowcount varchar(10),@dyncnum intdeclare@tablename varchar(100)declarecursor1 cursorforselectnamefromsysobjects  wherextype = 'u'orderbynameopencursor1fetchnextfromcursor1 into@tablenamewhile @@fetch_status=0beginset@sql='sp_rename '''+@tablename+''','''+upper(@tablename)+''''print @sql--exec(@sql)fetchnextfromcursor1 into@tablenameendclosecursor1deallocatecursor1

 

 批量修改字段名代码:

 

declare@sql varchar(300)declare@tablecolumnname varchar(100),@columnname varchar(100)declarecursor1 cursorforselectb.name+'.['+a.name+']',a.namefromsyscolumns a,sysobjects b wherea.ID = object_ID(b.name) andb.xtype = 'u'anda.xtype <>189 anda.xtype <>34 anda.xtype <>35 anda.xtype <>36opencursor1fetchnextfromcursor1 into@tablecolumnname,@columnnamewhile @@fetch_status=0beginset@sql='sp_rename '''+@tablecolumnname+''','''+upper(@columnname)+''',''column'''--print @sqlexec(@sql)fetchnextfromcursor1 into@tablecolumnname,@columnnameendclosecursor1deallocatecursor1

 

 

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

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

修改表名:

select'alter table "'||table_name||'" rename to '||upper(table_name)||';'fromuser_tables wheretable_name<>upper(table_name);

 

修改字段名:

select'alter table '||table_name||' rename column "'|| column_name ||'" to '||upper(column_name)||';'fromuser_tab_columns wherecolumn_name<>upper(column_name);

 

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

 

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

 

--清除数据select'TURNCATE table '||table_name ||';'fromuser_tables;--删除表select'drop table '||table_name ||';'fromuser_tables;
总结

以上是内存溢出为你收集整理的SQLSERVER和ORACLE批量处理表名和字段名大写全部内容,希望文章能够帮你解决SQLSERVER和ORACLE批量处理表名和字段名大写所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1174068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存