oracle字段类型转换的处理
发布时间:2020-12-12 15:46:42 所属栏目:百科 来源:网络整理
导读:Oracle的CLOB类型数据处理: http://donald-draper.iteye.com/admin/blogs/2335296 Oracle中表列由VARCHAR2类型改成CLOB : http://www.jb51.cc/article/p-bgtkrfwe-bct.html mysql中把一个表的数据批量导入另一个表中: http://blog.csdn.net/evan_endian/ar
Oracle的CLOB类型数据处理:
http://donald-draper.iteye.com/admin/blogs/2335296
Oracle中表列由VARCHAR2类型改成CLOB : http://www.52php.cn/article/p-bgtkrfwe-bct.html mysql中把一个表的数据批量导入另一个表中: http://blog.csdn.net/evan_endian/article/details/8652528 Oracle中表列由VARCHAR2类型改成CLOB文章中方式是, 假设要将test的表中col字段(VARCHAR2),改为CLOB, 以下所有测试在navicat环境下:表名带引号,在SQLPLUS,则不用,注意区分 首先将添加temp字段 alter table "test" add "temp" CLOB; UPDATE "test" SET "temp" = "col"; 当表字段顺序无关时,则删除指定的列, alter table "test" drop column "col"; 然后修改temp字段为col alter table "test" RENAME COLUMN "temp" TO "col"; 这种方案,是在字段顺序无关,当与顺序有关,且col字段为主键不能为null,这时怎么办呢? 假设原表为product,product含有一个字段为fallTime(DATE),且为主键,不为空,现需要将fallTime字段改为 varchar类型; 如果直接导出SQL脚本,修改表结构,及数据,任务繁琐,同时SQL脚本中的,记录往往是分条insert 实例如下: insert into product ....; insert into product ....; ..... 这种脚本跑的相当慢,有人建议,将insert放在Begin和commit之间一次提交, 而不是insert一条记录,要commit一次;还有人建议修改为,如下形式: insert into product values XXX,YYY,...... 这两种方式我没用,你可以试试; 如果用临时字段转换,因为要修改字段fallTime的类型,而fallTime又是主键,不能直接修改fallTime字段类型 ,这是因为修改fallTime字段,fallTime列值必须为null,而fallTime又是主键,又不能为空,这个如何是好? 下面将介绍一种方案: 首先将导出product结构,包括主键,索引,表注释和字段注释等信息,修改表结构,将fallTime的DATE类型修改为 varchar,根据修改后的表结构信息创建test表,注意test表中的fallTime字段为varchar 1.在test表中添加临时转化字段: alter table "test" add "temp" varchar2(10); 2.然后将product的数据导入到test中: INSERT INTO "test" SELECT t.*,"TO_CHAR"(t.fallTime,'YYYY-MM-DD') FROM product t; 3.如果fallTime可以为null则执行下面语句: UPDATE "test" SET "fallTime" = NULL; UPDATE "test" SET "fallTime" = "temp"; 不能为空则执行下面语句: UPDATE "test" SET "fallTime" = "temp"; 4.然后删除product,删除test的temp列: alter table "test" drop column "temp"; 5.重名test为product即可。 其中1,2的另一种方法: 先保证表结构相同,先插入数据 INSERT INTO "test" SELECT t.* FROM product t; 在添加列 alter table "test" add "temp" varchar2(10); 再更新列 UPDATE product SET "temp" = "TO_CHAR"(fallTime,'YYYY-MM-DD'); 总结: 针对列顺序无关的,则直接新建临时字段,删除先前字段,重名临时字段即可;对于字段顺序有关,且字段不能为空的,copy表结构,并修改需要更改的字段的类型,新建临时字段,将需要转换的字段数据插入到临时字段,然后将临时字段,update and set到需要更改类型字段,删除临时字段,修改表名,即可。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Powershell保存XML并保存格式
- ruby-on-rails – Rails 4.2:渴望加载与STI的has_many关系
- reactjs – MapDispatchToProps导致父组件中的Typescript错
- ReactNative 仿网易新闻UI Demo
- C#实现根据字节数截取字符串并加上省略号的方法
- Joomla 3 Component xml install
- 理解 React 中的前端路由
- c# – 网页 – 三维地震可视化 – Silverlight?
- 单工,半双工,全双工区别以及TDD和FDD区别
- coco2dx 学习笔记 -- 进度动画 ccProgressTimer ccProgress