ORA-29275:部分多字节字符
2015-09-29 16:20
716 查看
Platform:
OS:Windows Server 2012 R2 64bit
Oracle:11.2 64bit
引子:
在对医院的审计中,对表inpadm.pats_in_hospital。遇到了这个问题,经查找资料发现这是由于在导入数据时,本机字符集与数据来源机的字符集不相同造成的,在现在知识下没有变换字符的达到解决问题的方法-_-!因些只能采用变通的方法来解决。解决的思路是先查看表内容,观察是哪一个字段出现问题,然后再对该字段进行TO_NCHAR(或者TO_SINGLE_BYTE)操作,由于该表的字段较多(27个),因些还要用到EXCEL进行辅助操作。
步骤:
1、查看本机字符集,发现本机字符集与数据源机字符不同
2、使用网上的办法修改本机字符依然出现ORA-29275错误,无解……(不知道是不是因为中文标点符号的问题,因为使用TO_SINGLE_BYTE也可以解决这个问题)
3、改变思路,先查看一下是哪个字段有问题,发现字段DIAGNOSIS是VARCHAR类型,且汉字字符串较长,可能是这个字段出现了问题
4、使用数据字段,选出该表的字段名。
5、将以上所有字段名粘贴到EXCEL中,找到DIAGNOSIS改为TO_NACHAR(DIAGNOSIS),再将查询语句Copy回到toad中执行。就显示出了该表的全部内容。
END
OS:Windows Server 2012 R2 64bit
Oracle:11.2 64bit
引子:
在对医院的审计中,对表inpadm.pats_in_hospital。遇到了这个问题,经查找资料发现这是由于在导入数据时,本机字符集与数据来源机的字符集不相同造成的,在现在知识下没有变换字符的达到解决问题的方法-_-!因些只能采用变通的方法来解决。解决的思路是先查看表内容,观察是哪一个字段出现问题,然后再对该字段进行TO_NCHAR(或者TO_SINGLE_BYTE)操作,由于该表的字段较多(27个),因些还要用到EXCEL进行辅助操作。
步骤:
1、查看本机字符集,发现本机字符集与数据源机字符不同
SELECT * FROM nls_database_parameters ;
2、使用网上的办法修改本机字符依然出现ORA-29275错误,无解……(不知道是不是因为中文标点符号的问题,因为使用TO_SINGLE_BYTE也可以解决这个问题)
3、改变思路,先查看一下是哪个字段有问题,发现字段DIAGNOSIS是VARCHAR类型,且汉字字符串较长,可能是这个字段出现了问题
SELECT * FROM inpadm.pats_in_hospital WHERE rownum < 2 ;
4、使用数据字段,选出该表的字段名。
SELECT column_name FROM all_tab_columns WHERE table_name = 'pats_in_hospital' ;
5、将以上所有字段名粘贴到EXCEL中,找到DIAGNOSIS改为TO_NACHAR(DIAGNOSIS),再将查询语句Copy回到toad中执行。就显示出了该表的全部内容。
SELECT patient_id, visit_id, ward_code, dept_code, bed_no, admission_date_time, adm_ward_date_time, TO_SINGLE_BYTE (diagnosis), patient_condition, nursing_class, doctor_in_charge, operating_date, billing_date_time, prepayments, total_costs, total_charges, guarantor, guarantor_org, guarantor_phone_num, bill_checked_date_time, settled_indicator, lend_bed_no, bed_dept_code, bed_ward_code, dept_code_lend, lend_indicator, is_newborn FROM inpadm.pats_in_hospital WHERE EXTRACT (YEAR FROM admission_date_time) = 2014;
END
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- oracle中创建数据库和表空间的几点总结
- 数据库自动备份脚本
- oracle的nvl函数的使用介绍
- 解决oracle用户连接失败的解决方法
- oracle的一些tips技巧
- Oracle 下的开发日积月累
- Oracle存储过程之数据库中获取数据实例
- Windows下ORACLE 10g完全卸载的方法分析
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ORACLE LATERAL-SQL-INJECTION 个人见解