Oracle中BLOB、CLOB、LONG、LongRaw数据类型的区别

(1)关于BLOB、CLOB、LONG、LongRaw数据类型的区别

LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列;


LONG RAW: 可变长二进制数据,最长2G;


CLOB: 用来存储单字节的字符数据;


NCLOB: 用来存储多字节的字符数据;


BLOB: 用于存储二进制数据;


BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。
  
CLOB,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有 LONG只能有一列的限制

 

(2)若保存图片、文本文件、Word文件BLOB最好,LONG RAW也不错,但Long是oracle将要废弃的类型,因此建议用LOB。

(3)类型转换

有如下两个表

create table testraw1(col1 number,col2 long raw);
create table testraw2(col1 number,col2 blob);

要把 testraw1 里面的资料写入到testraw2中,则可用如下方式

insert into testraw2
  select col2 ,to_lob(col2)
  from testraw1;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle,备份含有longlong raw、blobclob等大对象类型的表时,可能会出现错误提示“非法数据类型long”或“非法数据类型long raw”等。这是因为在Oracle,这些大对象类型数据不同于普通的数据类型,需要特殊处理才能备份和恢复。 要备份含有大对象类型的表,可以使用Oracle提供的exp和imp工具。具体步骤如下: 1. 确定需要备份的表名和所在的schema。 2. 使用exp工具备份表,命令格式如下: ``` exp userid=用户名/密码@数据库实例名 file=备份文件名.dmp tables=表名 ``` 其,`用户名`是数据库用户的名称,`密码`是用户的密码,`数据库实例名`是Oracle数据库的实例名,`备份文件名.dmp`是备份文件的名称,`表名`是需要备份的表的名称。 在备份过程,如果提示“是否导出long列”,选择“是”,将long类型数据导出到单独的文件。 3. 在恢复之前,需要先手动创建表。可以使用如下命令: ``` create table 表名(列定义); ``` 4. 在表插入数据。如果表long类型的列,需要使用如下命令: ``` insert into 表名(列名) values (empty_clob()); ``` 然后,使用如下命令将long类型数据插入到表: ``` declare v_clob clob; begin dbms_lob.createtemporary(v_clob, false); dbms_lob.fileopen(v_clob, 'long类型数据文件路径', 'r'); dbms_lob.loadfromfile(v_clob, 'long类型数据文件路径', dbms_lob.getlength(v_clob)); dbms_lob.fileclose(v_clob); update 表名 set 列名 = v_clob where ...; dbms_lob.freetemporary(v_clob); end; ``` 其,`long类型数据文件路径`是导出long类型数据的文件路径。 5. 使用imp工具恢复数据,命令格式如下: ``` imp userid=用户名/密码@数据库实例名 file=备份文件名.dmp full=y ``` 在恢复过程,如果提示“是否导入long列”,选择“是”,将long类型数据导入到表。 通过以上步骤,可以备份和恢复含有大对象类型的表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值