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
- SQLSERVER和ORACLE批量处理表名和字段名大写
- SQLSERVER和ORACLE批量处理表名和字段名大写
- Oracle批量修改表名和字段名
- oracle 将表名和字段名变为大写
- oracle将表名和字段名变为大写
- sqlserver数据库,批量更改表名和字段的前缀
- SQLSERVER查询所有数据库名,表名,和字段名
- SQLSERVER查询所有数据库名,表名,和字段名
- oracle 查询表名和字段名
- C#获取SQLServer数据库表名和字段名
- 获取Oracle、SqlServer、Access中表名、字段和主键(转)
- 获取Oracle、SqlServer、Access中表名、字段和主键(转)
- 获取Oracle、SqlServer、Access中表名、字段和主键(转)
- Oracle根据字段值找到表名和列名
- SQLSERVER 所有数据库名,表名,和字段名的语句
- 如何取得一个表的所有字段名用逗号分割(SQLSERVER和ORACLE)
- MySQL,SQLSERVER,ORACLE获取数据库表名及字段名
- 批量修改表名和列名
- 动态链接库和静态链接库
- ios开发第一弹--概述
- Hello world ——1
- XML 与 HTML 中 需要转义的字符
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--客户端对象模型和REST APIs概览 Windows Phone
- SQLSERVER和ORACLE批量处理表名和字段名大写
- javascript prototype、jjquery的extend和fn.extend
- HTMLParser使用
- UVA11402 - Ahoy, Pirates!(线段树)
- xp 更改系统信息
- 排列问题
- CF 448C Painting Fence(分治)
- 自定义定时器(Timer)
- jsp的自定义标签库