IMP-00058: 遇到 ORACLE 错误 1461

IMP-00058: 遇到 ORACLE 错误 1461
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值

问题描述:
------------------------------------------
1、出版社使用的数据库为Oracle v11.2.0.3.0

2、导入数据前,将数据库同名表及数据删除

3、通过SQL命令:“ IMP 用户名/密码@服务器名 file=dmp文件路径 indexes=n grants=n constraints=n statistics=none fromuser=data_user touser=用户名 tables=(导入表名) ”   导入数据(导入用户的默认表空间足够大)

4、执行中发生错误:
“连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
经由常规路径由 EXPORT:V11.01.00 创建的导出文件
警告: 这些对象由 DATA_USER 导出, 而不是当前用户
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
导入服务器使用 AL32UTF8 字符集 (可能的字符集转换)
. 正在将 DATA_USER 的对象导入到 SPT
. . 正在导入表                    "GG_WJ_JSBG"
IMP-00058: 遇到 ORACLE 错误 1461
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
IMP-00028: 上一个表的部分导入已回退: 回退 873250 行
成功终止导入, 但出现警告。

------------------------------------------
事情经过:

在电子审批库上使用exp命令导出了几张表
exp DATA_USER/fl5q9at7 file=/arch_p/chubanshe_20141211.dmp log=/oracle/chubanshe_20141211.log tables=gg_wj_jsbg,ss_scgz_dbwjyyb,gg_wj_xgzlwx,gg_wj_xgfzlwx
出版社拿到dmp文件后导入时报以上问题描述(邮件内容)中的错误。
源库字符集:
通过SQL> select * from nls_database_parameters; 得到字符集为 ZHS16GBK

目的字符集:AL32UTF8


SQL> desc data_user.gg_wj_jsbg;
Name         Type           Nullable Default Comments                                                                          
------------ -------------- -------- ------- ----------------------------------------------------------------------------------
RID          NUMBER(38)                      本字段无具体的业务意义,绝大部分表都增加本字段作主键,不使用有业务意义的字段作主键
SHENQINGH    VARCHAR2(16)                                                                                                      
WENJIANCFLJ  VARCHAR2(256)  Y                                                                                                  
JIANSUOBH    VARCHAR2(64)   Y                                                                                                  
JIANSUOFLH   VARCHAR2(2048) Y                                                                                                  
JIANSUOBDS   VARCHAR2(4000) Y                                                                                                  
JIANSUOBGLX  VARCHAR2(16)   Y                0  首次检索1  补充检索                                                          
JIANSUOBGJL  VARCHAR2(64)   Y                                                                                                  
XINGSHENR    VARCHAR2(64)   Y                                                                                                  
JIANSUOY     VARCHAR2(64)   Y                                                                                                  
SHENHER      VARCHAR2(64)   Y                                                                                                  
JIANSUORQ    CHAR(8)        Y                                                                                                  
JIANSUOBGFCR CHAR(8)        Y                                                                                                  
YOUXIAOBJ    VARCHAR2(4)    Y                0 有效1 无效                                                                    
REGNAME      VARCHAR2(64)   Y                                                                                                  
REGTIME      NUMBER(38)     Y                                                                                                  
MODNAME      VARCHAR2(64)   Y                                                                                                  
MODTIME      NUMBER(38)     Y                                                                                                  
QUANLIYQXS   VARCHAR2(1024) Y                                                                                                  
SHUOMINGSYS  VARCHAR2(1024) Y                                                                                                  
BEIZHU       VARCHAR2(1024) Y                                                                                                  
SHENCHAYXM   VARCHAR2(256)  Y                                                                                                  
SHENCHABM    VARCHAR2(256)  Y                                                                                                  
IPCFLH       VARCHAR2(2000) Y                                                                                                  
SHUOMINGSYX  VARCHAR2(1024) Y                                                                                                  
SXITONGTSR   VARCHAR2(14)   Y     


从源表结构上可以看到 JIANSUOBDS   VARCHAR2(4000)。VARCHAR2最大长度是4000,超过4000将以long类型存储。 ZHS16GBK 每个汉字占2个字节,AL32UTF8每个汉字占3个字节。源表中长度为4000的字段
到目的库时长度超标了,会当做LONG类型,而这一列bonding的是VARCHAR2.所以报这个错。


解决方法:
使用expdp和impdp就没问题
1、目的库那边是个人自己的测试库,所以让他们重新建一个ZHS16GBK字符集的实例
2、查看源表长字段最长存了多少字节
SQL>  select length(max(t.JIANSUOFLH)),length(max(t.JIANSUOBDS)),length(max(t.Ipcflh)),max(t.Ipcflh) from data_user.gg_wj_jsbg t;

LENGTH(MAX(T.JIANSUOFLH)) LENGTH(MAX(T.JIANSUOBDS)) LENGTH(MAX(T.IPCFLH)) MAX(T.IPCFLH)
------------------------- ------------------------- --------------------- --------------------------------------------------------------------------------
                       16                       106                    71 针对审查员在第一次审查意见通知书中提出的审查意见,申请人提交了意见陈述书以及经过

如果不行可以通过create table temp_gg_wj_jsbg as select * from gg_wj_jsbg.
然后 alter table temp_gg_wj_jsbg modify JIANSUOBDS   VARCHAR2(400) ;----收缩一下长度
alter table temp_gg_wj_jsbg add constraint temp_gg_wj_jsbg_pk primary key (RID);

 

 

 

 

 


网上对原因的罗列:
-----------------------------------------------------------------------------------------
IMP-00058: 遇到 ORACLE 错误 1461
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
IMP-00028: 上一个表的部分导入已回退: 回退 36 行
可能有以下几种原因:
[1]插入到字符串长度大于4000字节。
[2]插入到表中的记录的某个字段数据的实际长度大于2000个字节(如果是UTF-8,则是1333个字节);或者是插入的记录中有两个或两个以上长度大于2000字节的字符串。
[3]数据库与客户端的JDBC驱动不匹配。
[4]服务器A和服务器B字符集不同等等。

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

转载于:http://blog.itpub.net/28341524/viewspace-1443227/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值