SQLSERVER和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中的表名和字段名都修改为大写,下面给出的是对应的代码。 批量修改表名: ? ?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 ??? 批量修改字段名代码: ??? ?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;? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql – 获取一个时间范围的每小时
- sql-server – Biztalk Adapter Pack安装 – 没有
- SQL Server delete from 表名与truncate table 表
- base圖片保存到sqlserver,讀取出來不一樣的問題
- sql – MS Access 2010在查询中运行总计
- 实战:sqlserver 2008 R2容灾方案:另一种思路-2
- sql-server – SSRS仅在报告正文的最后一页显示值
- Oracle 10g各个帐号的访问权限、登录路径、监控状
- SqlServer 基础知识 数据检索、查询排序语句
- sql-server – TSQL – 求和一个联合查询