我们有两个Oracle数据库被设置为:
SQL> SELECT USERENV ('language') FROM DUAL; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8
其余的例子如下:
SQL> SELECT USERENV ('language') FROM DUAL; USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.WE8ISO8859P1
这是在从一个数据库发送到另一个数据库中创build各种问题。 是否有可能转换两个“非标准”数据库来匹配其他人。 如果是这样,怎么样?
好,第一个字符集是Unicode,它基本上支持所有的语言。 第二个(“P1”)是西欧ASCII,支持英文和一些额外的西方字符。
所以,
通过导出(将NLS_LANG设置为WE8..P1),创build一个新的空数据库并导入(再次将NLS_LANG设置为WE8..P1),可以很容易地将WE8 … P1转换为Unicode。 但是,转换为Unicode有一些副作用,尤其是关于任何varchar2列的限制 – 如果是varchar2(20),通常意味着20个字节,所以当使用Unicode时,20个字节可以容纳更less的(非英文)字符。因此,为了避免数据截断,有些列可能需要放大…所有的细节在这里:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28298/ch11charsetmig.htm
再从UTF8转换到WE8..P1,用NLS_LANG = WE8 … P1(现在你将丢失所有不能映射成P1 ASCII的字符,比如阿拉伯文,中文等)导出,创build一个空的We8 .. P1数据库并用NLS_LANG = WE8ISO8859P1导入数据。