不同服务器的两个实例,相同字符集,一个导出,一个导入。导入时却发生“ORA-12899: 列XXX的值太大 (实际值: 39, 最大值: 32)”的报错 oracle字符集导入导出字符串值太大ORA-12899 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 导出客户机使用 US7ASCII 字符集 (可能的字符集转换)exp导出时最好在使用的客户端也设置好字符集可以使用expdp/impdp来导,跳过字符集的问题 你好,谢谢指点。不过,就目前已经拿到的dmp文件,有没有解决方法呢?徒手操作也行,只要是2天内能够完成的。比如说,我在本地新建一个GBK的实例,导进去。再按照AL32UTF8仅导出用户下的表,为bbb.dmp。最后再将bbb.dmp导入新建的 目标实例中。我不太了解导入导出的机理,能这样操作吗?如果可以,怎样才能“按照AL32UTF8仅导出用户下的表”呢? 如果用al32utf8,可以分两次imp,第一次导入表结构,然后写个存储过程将字符型的字段的长度加长第二次导入数据但是有个问题,你的数据可能在exp导出的时候已经发生了字符集转换,不小心已经存在了乱码。还不如重新导出导入一遍。数据量大的话,数据泵的优势更明显或者用gbk字符集确定没有问题的话,就用这个实例好了,没必要再重新导到al32utf8下,user1往usertmp转移数据报错,应该检查两边的表的相关字段定义的长度是不是不一致。指定导入某个用户的数据,在imp中指定参数fromuser和touser即可 对不住各位啊 经过最新确认,上家拿来的ppp.dmp文件与我当时查询的数据库出自不同的服务器真实的源库字符集是GBK。大家海涵~~(ง •̀_•́)ง那么现在问题就回归到(第一回)了,kettle转移数据时为啥会报错。检查了一下个别出错的字段,发现,user1与usertmp中,表相应的字段定义有细微差别,(在plsql developer中显示表结构)比如字段 AAA: user1 中为 AAA varchar2(10 char); 但usertmp中则为 AAA varchar2(10); --这个是kettle检测源表结构自动生成的。这里就不太懂了,我们定义表字段的时候不是一般都是 BBB varchar2(10), 就行了吗?多出个char的这种情况是建表人通过 BBB varchar2(10 char), 这样的语句定义的吗? varchar2(10)=varchar2(10 byte)和varchar2(10 char)是不一样的比如在GBK字符集下,一个汉字占2个字节。一个“一二三四五六”在user1中能正常插入,应为6个字符小于10个字符的限制,在usertmp中就会报错,因为6个汉字占12个字节,超过了10个字节的限制 也就是说,建表人建表时是指定了字段的长度单位为char了。建表人用到的是create table AAA( varchar2(10 char)); 这样的语句。对不?那这样问题就的确出在kettle 自动生成的建表语句上了我再想想怎么改kettle的实现方式恩。感谢。结贴~ 高手帮忙设计下怎么实现这样的操作 求sql语句 救命,DBLINK的问题,经常卡死.求助 创建多表无关联试图 请求一条SQL语句--在线等待,立即给分 在创建并启动ORACLE例程的时候出现:ORA-01017:无效的用户名/口令;拒绝登陆 proc*c问题 急,快疯了!!怎样改变视的检索条件!帮帮忙吧!!!! 請教問題 小白求解答,语句怎么写? 请教下oracle数据库文件迁移的问题 如何在oracle中使用begin end来运行select
可以使用expdp/impdp来导,跳过字符集的问题
不过,就目前已经拿到的dmp文件,有没有解决方法呢?徒手操作也行,只要是2天内能够完成的。比如说,我在本地新建一个GBK的实例,导进去。再按照AL32UTF8仅导出用户下的表,为bbb.dmp。
最后再将bbb.dmp导入新建的 目标实例中。
我不太了解导入导出的机理,能这样操作吗?如果可以,怎样才能“按照AL32UTF8仅导出用户下的表”呢?
第二次导入数据但是有个问题,你的数据可能在exp导出的时候已经发生了字符集转换,不小心已经存在了乱码。还不如重新导出导入一遍。数据量大的话,数据泵的优势更明显或者用gbk字符集确定没有问题的话,就用这个实例好了,没必要再重新导到al32utf8下,user1往usertmp转移数据报错,应该检查两边的表的相关字段定义的长度是不是不一致。指定导入某个用户的数据,在imp中指定参数fromuser和touser即可
对不住各位啊 经过最新确认,上家拿来的ppp.dmp文件与我当时查询的数据库出自不同的服务器
真实的源库字符集是GBK。
大家海涵~~
(ง •̀_•́)ง那么现在问题就回归到(第一回)了,kettle转移数据时为啥会报错。
检查了一下个别出错的字段,发现,user1与usertmp中,表相应的字段定义有细微差别,(在plsql developer中显示表结构)
比如字段 AAA:
user1 中为 AAA varchar2(10 char);
但usertmp中则为 AAA varchar2(10); --这个是kettle检测源表结构自动生成的。
这里就不太懂了,我们定义表字段的时候不是一般都是 BBB varchar2(10), 就行了吗?
多出个char的这种情况是建表人通过 BBB varchar2(10 char), 这样的语句定义的吗?
和varchar2(10 char)是不一样的
比如在GBK字符集下,一个汉字占2个字节。一个“一二三四五六”在user1中能正常插入,应为6个字符小于10个字符的限制,在usertmp中就会报错,因为6个汉字占12个字节,超过了10个字节的限制
建表人用到的是create table AAA( varchar2(10 char)); 这样的语句。对不?那这样问题就的确出在kettle 自动生成的建表语句上了我再想想怎么改kettle的实现方式
恩。感谢。结贴~