不同字符集的数据库之间的数据迁移问题

原创 2004年07月23日 09:12:00

准备工作(准备测试数据等):<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

bepone> uname -a

OSF1 bepone V4.0 1229 alpha

bepone>

bepone>

bepone> sqlplus /nolog

 

SQL*Plus: Release 8.1.7.0.0 - Production on Thu Jan 23 15:24:12 2003

 

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

 

SQL> conn eygle/eygle

Connected.

SQL> create table testnls(a char(9));

 

Table created.

 

SQL> insert into testnls values('相约98');

 

1 row created.

 

SQL> commit

  2  ;

 

Commit complete.

 

SQL> select * from testnls;

 

A

---------

相约98

 

SQL> exit

Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

JServer Release 8.1.7.0.0 - Production

bepone>

 

从客户端检查一下显示是否正常:

Microsoft Windows 2000 [Version 5.00.2195]

(C) 版权所有 1985-2000 Microsoft Corp.

 

C:/>sqlplus eygle/eygle@205

 

SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 1 23 15:43:22 2002

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

 

连接到:

Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

JServer Release 8.1.7.0.0 - Production

 

SQL> select * from testnls;

 

A

---------

相约98

 

SQL>

 

 

 

验证服务器字符集的两个方法:

方法一:

bepone> env | grep NLS

NLS_LANG=American_america.zhs16gbk

ORA_NLS33=/data/oracle/app/oracle/product/8.1.7/ocommon/nls/admin/data

bepone>

SQL> SELECT VALUE$ FROM PROPS$

  2  WHERE NAME='NLS_NCHAR_CHARACTERSET';

 

VALUE$

--------------------------------------------------------------------------------

ZHS16GBK

 

SQL>

 

 

方法二:

使用oracle 817exp导出数据

bepone> exp eygle/eygle file=/data/oracle/eygle log=/data/oracle/eygle rows=y

 

Export: Release 8.1.7.0.0 - Production on Thu Jan 23 16:06:51 2003

 

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

 

 

Connected to: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

JServer Release 8.1.7.0.0 - Production

Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set

. exporting pre-schema procedural objects and actions

. exporting foreign function library names for user EYGLE

. exporting object type definitions for user EYGLE

About to export EYGLE's objects ...

. exporting database links

. exporting sequence numbers

. exporting cluster definitions

. about to export EYGLE's tables via Conventional Path ...

. . exporting table                           TEST          3 rows exported

. . exporting table                        TESTNLS          1 rows exported

. exporting synonyms

. exporting views

. exporting stored procedures

. exporting operators

. exporting referential integrity constraints

. exporting triggers

. exporting indextypes

. exporting bitmap, functional and extensible indexes

. exporting posttables actions

. exporting snapshots

. exporting snapshot logs

. exporting job queues

. exporting refresh groups and children

. exporting dimensions

. exporting post-schema procedural objects and actions

. exporting statistics

Export terminated successfully without warnings.

bepone>

bepone>

bepone> cd /data/oracle

bepone> ls /data/oracle/eygle*

/data/oracle/eygle.dmp      /data/oracle/eygletest.dmp

/data/oracle/eygle.log      /data/oracle/eygletest.log

 

使用utledit打开这个dmp文件,找到第2个和第3个字节:

SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;

 

NLS_CHARSET_NAME(TO_NUMBER('03

----------------------------------------

ZHS16GBK

 

SQL>

 

 

传输这个dmp到远程主机:

bepone> ftp hpl1

Connected to hpl1.

220 hpl1 FTP server (Version 1.1.214.4(PHNE_23950) Tue May 22 05:49:01 GMT 2001) ready.

Name (hpl1:oracle): oracle

331 Password required for oracle.

Password:

230 User oracle logged in.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> bin

200 Type set to I.

ftp> prompt *

Interactive mode off.

ftp> cd /ora

250 CWD command successful.

ftp> mput eygle*

local: eygle.dmp remote: eygle.dmp

200 PORT command successful.

150 Opening BINARY mode data connection for eygle.dmp.

226 Transfer complete.

16384 bytes sent in 0.00083 seconds (1.9e+04 Kbytes/s)

local: eygle.log remote: eygle.log

200 PORT command successful.

150 Opening BINARY mode data connection for eygle.log.

226 Transfer complete.

1206 bytes sent in 0 seconds (1.2 Kbytes/s)

local: eygletest.dmp remote: eygletest.dmp

200 PORT command successful.

150 Opening BINARY mode data connection for eygletest.dmp.

226 Transfer complete.

16384 bytes sent in 0.016 seconds (1e+03 Kbytes/s)

local: eygletest.log remote: eygletest.log

200 PORT command successful.

150 Opening BINARY mode data connection for eygletest.log.

226 Transfer complete.

1155 bytes sent in 0 seconds (1.1 Kbytes/s)

ftp> bye

221 Goodbye.

bepone>

$ hostname

hpl1

$

$

$ uname -a

HP-UX hpl1 B.11.11 U 9000/800 1124444645 unlimited-user license

$

$

$ cd /ora

$ ls eygle*

eygletest.dmp  eygletest.log

$

 

 

 

查看远程数据库的字符集:

$ env | grep NLS

NLS_LANG=american_america.UTF8

ORA_NLS33=/ora/ocommon/nls/admin/data

$

 

$ sqlplus "/ as sysdba"

 

SQL*Plus: Release 9.2.0.1.0 - Production on Thu Jan 23 15:49:42 2003

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

 

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production

With the Partitioning and Real Application Clusters options

JServer Release 9.2.0.1.0 - Production

 

SQL> conn eygle/eygle@hpcin

已连接。

SQL> select nls_charset_name(to_number('0367','xxxx')) from dual;

 

NLS_CHARSET_NAME(TO_NUMBER('0367','XXXX'))

------------------------------------------------------------------

 

UTF8

 

SQL>

 

 

使用编辑工具修改dmp的字符集:

eygle.dmp中的第二和第三个字节改从 0354 0367

 

 

 

使用oracle 920imp导入数据:

$ imp eygle/eygle file=/ora/eygle

 

Import: Release 9.2.0.1.0 - Production on Thu Jan 23 16:07:31 2003

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

 

Connected to: Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production

With the Partitioning and Real Application Clusters options

JServer Release 9.2.0.1.0 - Production

 

Export file created by EXPORT:V08.01.07 via conventional path

import done in UTF8 character set and AL16UTF16 NCHAR character set

import server uses WE8ISO8859P1 character set (possible charset conversion)

export server uses ZHS16GBK NCHAR character set (possible ncharset conversion)

. importing EYGLE's objects into EYGLE

. . importing table                         "TEST"          3 rows imported

. . importing table                      "TESTNLS"          1 rows imported

Import terminated successfully without warnings.

$

 

 

测试效果:

 

数据库字符集和客户端字符集(2%)是不同的,字符集转化可能会造成不可预期的后果

问题描述:本地连接服务器oracle数据库时,提示(数据库字符集和客户端字符集(2%)是不同的,字符集转化可能会造成不可预期的后果) 问题原因:问题出在oracle服务端的字符集不支持中文导致。...
  • T_wangjiyang
  • T_wangjiyang
  • 2018年01月10日 10:02
  • 14

常见的几种字符集

常见的字符集有ISO-8859-1,GB2312,GBK,UTF-8,UTF-16 首先我们来看下ISO-8859-1编码 字符串"I am 君山" 用ISO-8859-1编码,编码结果如图所示   ...
  • u010627840
  • u010627840
  • 2015年12月27日 10:02
  • 3981

Oracle数据库字符集和客户端字符集不同的解决办法

在用PLSQL登录oracle数据库时可能遇到报错如下: 数据库字符集(ZHS16GBK)和客户端字符集(2%)是不同的,字符集转化可能会造成不可预期的后果   不管错误信息中你的数...
  • eddiesen
  • eddiesen
  • 2017年05月02日 17:09
  • 624

VS2010配置连接远程数据库的字符串

VS2010配置连接远程数据库的字符串    本地项目访问远程的数据库
  • u014368040
  • u014368040
  • 2016年09月29日 17:34
  • 1041

MySQL查看所有可用的字符集

MySQL查看所有可用的字符集Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL...
  • you23hai45
  • you23hai45
  • 2015年09月17日 21:17
  • 2405

MySQL数据库、数据表和字段字符集查询、修改和配置

一、设置编码 LINUX  修改vi/etc/my.cnf WINDOWS my.ini   在[client]下添加      default-character-set=utf8    在[my...
  • cc41798520101
  • cc41798520101
  • 2016年04月10日 17:35
  • 931

PLSQL连接远程ORACLE数据库中文乱码解决

ORACLE版本  11g PLSQL版本   9 现象 :连接远程oracle 中文乱码 解决步骤 : 1 :   查看oracle字符集 select * from nls_databas...
  • emmaNN
  • emmaNN
  • 2015年07月18日 09:37
  • 2761

oracle 在本地查询远程数据库的方法,如何组合远程链接字符串

方法如下: 第一、创建远程链接的link: create public database like linkorcl(创建的link名称) connect to zhang(用户名) iden...
  • zhangbest2009
  • zhangbest2009
  • 2012年11月19日 17:13
  • 1229

ORACLE学习之九 Oracle 字符集的查看和修改 (转帖) 【EXP/IMP 与 字符集|NLS】

ORACLE学习之九 Oracle 字符集的查看和修改 (转帖)  Oracle 字符集的查看和修改   一、什么是Oracle字符集          Oracle字符集是一个...
  • haiross
  • haiross
  • 2015年12月25日 16:27
  • 1310

字符集研究之不同字符集的转换方式

作者:朱金灿来源:http://blog.csdn.net/clever101         在上篇文章中介绍了多字节字符集和unicode字符集,今天介绍下两大字符集之间的转换方式。       ...
  • clever101
  • clever101
  • 2016年03月12日 00:11
  • 2702
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不同字符集的数据库之间的数据迁移问题
举报原因:
原因补充:

(最多只允许输入30个字)