含有long字段表的复制


含有long字段表的复制

==========================

创建表并插入测试数据

SQL> create table an(id int,name long);
表已创建。

SQL> create table an_bak(id int,name long);
表已创建。

SQL> insert into an select 1,'an' from dual;
已创建 1 行。

SQL> commit;
提交完成。

---------------------------

将表中数据插入到备份表中

SQL> insert into an_bak select * from an;
insert into an_bak select * from an
                          *
第 1 行出现错误:
ORA-00997: illegal use of LONG datatype

报错原因:

---------------------------

使用copy命令复制表

SQL> copy from hnunicom/hnunicom@hl insert an_bak using select * from an;

数组提取/绑定大小为 15。(数组大小为 15)
将在完成时提交。(提交的副本为 0)
最大 long 大小为 80。(long 为 80)
1 行选自 hnunicom@hl
   1 行已插入 AN_BAK。
   1 行已提交至 AN_BAK (位于 DEFAULT HOST 连接)。

---------------------------

验证数据
SQL> select * from an_bak;

        ID NAME
---------- --------------------------------------------------------------------------------
         1 an

=================================

将long字段转换成clob

oracle从8i开始就不推荐使用long数据类型
推荐使用lob来代替long

SQL> alter table an_bak modify(name clob);

表已更改。

SQL> create table an_bak_bak as select * from an_bak;

表已创建。

使用lob类型字段将不会产生类似long的问题


-----------------------------------

数据长度较小的情况下,clob与long是没有差别的

SQL> create table an_b (id int,name long);

表已创建。

SQL> insert into an_b select * from an_bak_bak;

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from an_b;

        ID NAME
---------- ---------------------------------------------
         1 an
        

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13177610/viewspace-673812/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13177610/viewspace-673812/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值