Oracle csscan工具的工作原理

    再来回顾一下上一篇中的两条样本数据.

SQL> col col2 format a40
SQL> select col1, dump(col2) col2 from t_charset;

COL1       COL2
---------- ----------------------------------------
ZHS16GBK   Typ=1 Len=6: 228,184,173,229,155,189
UTF8       Typ=1 Len=4: 214,208,185,250

    其实csscan的工作原理和CONVERT函数一样, 如果数据库中存放的已经是UTF8字符集了, 那么肯定可以转换到UTFE字符集, 因此我们在使用csscan或CONVERT函数时, 源字符集指定为UTF8而目标字符集指定为UTFE(因为是UTF8的超集). 先测试第一条, 数据库中存放的不是UTF8格式的, 因此转换就报错了.

SQL> SELECT CONVERT(COL2,'UTF8','UTFE') FROM T_CHARSET WHERE COL1='UTF8';
                                        *
ERROR at line 1:
ORA-12703: this character set conversion is not supported

    测试另一条记录则可以成功转换, 没有报错.

SQL> SELECT CONVERT(COL2,'UTF8','UTFE') FROM T_CHARSET WHERE COL1='ZHS16GBK';

CONVERT(COL2,'UTF8','UTFE')
-----------------------------------------------
......

    csscan程序可以找出所有含有字符字段的表中, 存放的内容不是指定字符集(如CONVERT函数转换报错)的记录, 将ROWID存放在预先创建好的表中. 然后你可以查询这些表, 将没有转换成目标字符集的记录处理掉.

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • Get me my coat, please.
  • 请帮我拿下外套.
  • Make me a cup of coffee, will you?
  • 给我冲杯咖啡, 好吗?
  • Call me tomorrow if you have time.
  • 明天要有时间就给我打个电话.
  • Could you tell me where I can find these books?
  • 您能告诉我在哪儿能找到这些书吗?
  • Certainly.
  • 当然了.