varchar2改为clob的解决步骤

由于在后台项目建表时考虑不周全,导致列的类型选择错误,现需要修改列的类型。

一.varchar2改为clob

MYSQL修改列名写法:ALTER TABLE `表名` CHANGE COLUMN `旧列名` `新列名` DATETIME NULL DEFAULT NULL COMMENT '修改时间' ;

二.oracle中Blob和Clob类型的区别

1.BLOB   
 BLOB全称为二进制大型对象(Binary   Large   Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节   
2.CLOB   
 CLOB全称为字符大型对象(Character   Large   Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。可存储的最大大小为4G字节

     通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。

JAVA里面对CLOB的操作

  在绝大多数情况下,使用2种方法使用CLOB

  1 相对比较小的,可以用String进行直接操作,把CLOB看成字符串类型即可

  2 如果比较大,可以用 getAsciiStream 或者 getUnicodeStream 以及对应的 setAsciiStream 和 setUnicodeStream 即可

三.CLOB字段和varchar

如果能控制在4000个字符以内的,尽量还是用varchar2(4000 CHAR)吧 如果超过了,也只好用clob了。处理起来其实也还好,基本是在程序里面当作varchar来处理即可

超过就只能用CLOB,12C里面有32K的VARCHAR2,但是实现起来还是CLOB。 如果在CLOB里面存短文本,ORACLE还是会像VARCHAR2一样处理,不会和其他字段分开存储。

四.str绑定值的结尾null字符缺失

首先将数据长度确定出来。注意:中文占用字节长度的问题;根据字符集编码的不同,在oracle里有可能占2或者3个字节。其次查看定义的字段长度,我的字段长度为vachar2(4000),貌似varchar2最长就是4000,好奇的可以去查查这方面的问题。

1.报表中sql定义的最大长度是4000,在sql中如果字节个数大于4000的话, 
一个字符占两个字节,也就是 汉字*2+字母数 不能大于2000 
2.在复制excel粘贴到数据库中得时候也出现报错,原因是有一个单元格中有半个双引号,反映到数据库中识别就有问题了。 
解决办法:去掉半个双引号。
3.我的字段小于4000,没发现多余的引号,回车也去掉了也不行,后来,把excel中很长文本的那一列的格式修改成“文本”,再拷贝到
数据库中,提交就不报错了
终极解决方案:修改列的类型,vachar改成clob

五.复制表格数据

5.1只是复制表结构

当where1=2恒等于false,所以这条语句不能查出任何数据,只能有表结构。所以实现了只复制表结构不复制表数据功能

5.2复制表数据和表结构

ps:

参考网站

https://www.cnblogs.com/Marydon20170307/p/10008762.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值