2010-11-03

Oracle字符集差异导致的问题

两个Oracle数据库通过dblink导数据,实用create table ttttt as select * from ttttt@a.oracle.com,发现char(1)在新创建的表中变成了char(3),还好发现的及时,没有导致大的错误。

把char(3)改成varchar2(3),然后批量更新数据。

经检查是字符集导致的问题,字符类型的(char和varchar2)在utf8的数据库上会自动变成gbk的3倍。

教训:不同数据库间导数据需要特别注意字符集差异。

         最重要的是,应用应该尽量避免实用char这个数据类型。