Chinaunix首页 | 论坛 | 博客
  • 博客访问: 152631
  • 博文数量: 19
  • 博客积分: 1425
  • 博客等级: 上尉
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-20 16:48
文章分类

全部博文(19)

文章存档

2009年(1)

2008年(18)

我的朋友

分类:

2008-03-27 13:30:33

 
最近在Solaris系统下,用SQL*Loader加载数据时,经常会报一些莫名的错误,找不到某某字段等等。
原因是当你加载的数据有中文时,SQL*Loader会“断错句”,即将本来是以TAB分隔的两个字段,看作是一个字段,这样就导致了字段数不一致的问题。
解决方法是将SQL*Loader置于简体中文环境下运行:
 
export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK;
 
再次运行sqlldr时就会正常加载了。
 
原因是字符在从客户端到数据库存储的过程中进行了两次转换
看如下图所示
本机当前字符集 -  NLS_LANG所指字符集 - DB所用的字符集
ps: Solaris下可使用locale 命令查看当前字符集
$ locale
$ echo $NLS_LANG
如果NSL_LANG <> Database's Character Set
首先本地输入欧元符号时,对应的代码是A4,但A4在NLS_LANG所指的字符集里指的是“太阳符”,最后存储到数据库的时候代码又发生一次转换。
 
如果NSL_LANG = Database's Character Set
则本地存储的字符将直接存储于DB中
 
阅读(1433) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:成语

给主人留下些什么吧!~~