Sybase IQ 数据库字符集

由于最近在研究BI,所以在这个过程中会发现或大或小,或多或少的问题,为了方便以后查找,我会在研究过程中多做一些记录。


今天在做ETL练习的时候,我把源数据(Oracle)中某个表的数据ETL到 Sybase IQ中某个表中去,最后发现数据是进去了,但是中文 乱码。

因为Sybase IQ 中我使用的是 自带的Demo数据库,具体位置如下:

E:/DBMS/Sybase/ASIQ-12_7/demo(Windows XP)

其他人的位置视安装路径不同 有所不一样。

因为在做ETL抽取的过程中没有注意,所以最后发现到Sybase中的中文 数据是乱码。

于是乎第一想到的就是 数据库之间的字符集不匹配造成的,顺着这个思路查找发现

Oracle这边的数据库编码是:

select * from nls_database_parameters

Sybase IQ这边的数据库编码是:

下面介绍两种查看方法

  1. 首先通过Sybase central连接到要查看的数据库,然后选中要看的数据库,右键Properties-->Extended Info,然后查看CharSet即可。
  2. SELECT PROPERTY('CharSet');

 


通过以上验证发现 源数据库(Oracle)字符集为:ZHS16GBK; 目标数据库(Sybase IQ)字符集为iso_1

看到这里不难发现,问题应该是出现在字符集上。

于是我自己重新建立了一个Sybase IQ的数据,重新指定了字符集为:cp936

备注:

cp936就是指系统里第936号编码格式,也就是GB2312。

如下说明:

936 gb2312 简体中文(GB2312)

以至于gb2312  gbk gb18030之间的关系,可以先简单理解为:

gb2312 < gbk < gb18030

更加具体的理解可以参看:

http://zh.wikipedia.org/wiki/GBK


结束语:如果大家对以上问题有任何疑问可以留言给我。

你可能感兴趣的:(BI)