字符集為ZHS16GBK的資料庫匯入到字符集為AL32UTF8的資料庫
相信大家都對字符集有相當的瞭解了,廢話就不多說了!直接步入正題:這裡主要是測試含有 漢字的資料從ZHS16GBK的資料庫匯入到字符集為AL32UTF8
資料庫. 如有我沒想到的其他情況,請大家提建議,我繼續完善測試實驗。
測試環境:
目標庫:英傑的rac測試庫 由
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
sys@rac1>select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------
AMERICAN_AMERICA.AL32UTF8
yang@rac1>select * from nls_database_parameters;
PARAMETER VALUE
------------------------- ----------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.2.0.1.0
20 rows selected.
源庫:
Release 11.1.0.6.0 - Production on Friday, 11 March, 2011 21:11:49
Conneted to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
源庫的nls_ 資訊:
sys@ORACL> select * from nls_database_parameters;
PARAMETER VALUE
------------------------- --------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.1.0.6.0
測試步驟:這裡主要是測試含有 漢字的資料從ZHS16GBK 匯入到 AL32UTF8 .
在源庫建立含有漢字的表:
yang@ORACL> create table chart ( val varchar2(20));
表已建立。
======建立英文字元資料
yang@ORACL> insert into chart
2 select dbms_random.string('l',15)
3 from dual
4 connect by level <50;
已建立49行。
======建立中文漢字資料
yang@ORACL> insert into chart
2 select '阿里雲' as val from
3 dual connect by level <50;
已建立49行。
yang@ORACL> select * from chart;
VAL
--------------------
ogqodcrhyqaesks
zifjvopjwwvydjf
oaosnvrzjazdmju
ihpjfwpgzxlbosn
igimjnzkjbaiivf
jxqmgavtpfmlphf
izgrniqmuejiysb
cydqjrbjldnsucq
sikpsorziznhyly
bxstvwdqrqmnylp
ziveucwqsjbmlpu
qdhdwjoxthivxoe
dqideijubqlzeel
qtuyuiwnjigrqcj
gzgamguukwgogib
ufrnfcdtcnmxatg
rpuhrxfzzwmajec
kqsawluuwltmdbf
mlkfeymlhbqsrwj
fokunjivnccjhls
drlkbryvpklhlst
vaigghwmwspounp
qpdslsjqszpasgg
cevwjirdyowhzep
gpktcxauilvpjym
oyrrpyxlroflksp
hqfctsysbpnzkfi
ufcqglfwqgvuwdv
nhloooihrndmrcu
grrtelwqpgnmazw
olzmdcotmziiphj
fmohaagtultvxon
lwsqzgofvhgzajm
vcdeoomgsrzfvjr
pzpfqhpenensoij
nbvxphjkufcvxmj
ydfknwhpnzzpvsw
xzhooomfumuckdc
rohspaowywmblti
dhjctrkkrdlyhvr
yzevspqkpuumjzh
xqmdpotvouvzgzl
rnvcrercdxybwlt
zhbdhamarftudbr
biykwlracluonab
hsdpycatadxhpft
wskchunnmvkbprh
butuurwduseffzc
fosmnbjannddffp
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
已選擇98行。
yang@ORACL> commit;
提交完成。
yang@ORACL> select dump('阿里雲') from dual;
DUMP('阿里雲')
-------------------------------------
Typ=96 Len=6: 176,162,192,239,212,198 ===三個 漢字 佔用6個位元組
===================匯出操作===================================
Microsoft Windows [版本 6.1.7600]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
C:\Users\aaaa>set nls_lang=american_america.al32utf8 這裡後面測試不加也可以成功匯入al32utf8
C:\Users\aaaa>expdp yang/yang tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp
Export: Release 11.1.0.6.0 - Production on Friday, 11 March, 2011 21:19:04
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "YANG"."SYS_EXPORT_TABLE_01": yang/******** tables=chart directory=dumpdir dumpfile=zhs16g
bk.dmp
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "YANG"."CHART" 6.484 KB 98 rows
Master table "YANG"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for YANG.SYS_EXPORT_TABLE_01 is:
D:\DUMP\ZHS16GBK.DMP
Job "YANG"."SYS_EXPORT_TABLE_01" successfully completed at 21:19:20
==============================匯入到目標庫=========================================
oracle@rac1:rac1 /tmp/dump>export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ==.bash_profile 檔案裡已經宣告瞭,這裡是強調一下。
oracle@rac1:rac1 /tmp/dump>impdp yang/yang tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp log=zhs16gbk_to_al32utf8.log
Import: Release 11.2.0.1.0 - Production on Fri Mar 11 21:23:13 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
Legacy Mode Active due to the following parameters:
Legacy Mode Parameter: "log=zhs16gbk_to_al32utf8.log" Location: Command Line, Replaced with: "logfile=zhs16gbk_to_al32utf8.log"
Master table "YANG"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "YANG"."SYS_IMPORT_TABLE_01": yang/******** tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp
logfile=zhs16gbk_to_al32utf8.log
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "YANG"."CHART" 6.484 KB 98 rows
Job "YANG"."SYS_IMPORT_TABLE_01" successfully completed at 21:23:17
==============================在目標庫中驗證=======================================
sys@rac1>select dump('阿里雲') from dual;
DUMP('阿里雲')
-------------------------------------------------
Typ=96 Len=9: 233,152,191,233,135,140,228,186,145 阿里雲 三個漢字 佔用 9個位元組。
yang@rac1>select table_name from user_tables;
TABLE_NAME
------------------------------
CHARSET
CHART
yang@rac1>select val from chart;
VAL
----------------
ogqodcrhyqaesks
zifjvopjwwvydjf
oaosnvrzjazdmju
ihpjfwpgzxlbosn
igimjnzkjbaiivf
jxqmgavtpfmlphf
izgrniqmuejiysb
cydqjrbjldnsucq
sikpsorziznhyly
bxstvwdqrqmnylp
ziveucwqsjbmlpu
qdhdwjoxthivxoe
dqideijubqlzeel
qtuyuiwnjigrqcj
gzgamguukwgogib
ufrnfcdtcnmxatg
rpuhrxfzzwmajec
kqsawluuwltmdbf
mlkfeymlhbqsrwj
fokunjivnccjhls
drlkbryvpklhlst
vaigghwmwspounp
qpdslsjqszpasgg
cevwjirdyowhzep
gpktcxauilvpjym
oyrrpyxlroflksp
hqfctsysbpnzkfi
ufcqglfwqgvuwdv
nhloooihrndmrcu
grrtelwqpgnmazw
olzmdcotmziiphj
fmohaagtultvxon
lwsqzgofvhgzajm
vcdeoomgsrzfvjr
pzpfqhpenensoij
nbvxphjkufcvxmj
ydfknwhpnzzpvsw
xzhooomfumuckdc
rohspaowywmblti
dhjctrkkrdlyhvr
yzevspqkpuumjzh
xqmdpotvouvzgzl
rnvcrercdxybwlt
zhbdhamarftudbr
biykwlracluonab
hsdpycatadxhpft
wskchunnmvkbprh
butuurwduseffzc
fosmnbjannddffp
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
98 rows selected.
小結:字符集子集向其超集轉換是可行的,如此例 ZHS16GBK轉換為AL32UTF8。
匯出使用的字符集將會記錄在匯出檔案中,當檔案匯入時,將會檢查匯出時使用的字符集設定,如果這個字符集不同於匯入客戶端的NLS_LANG
設定,字符集將根據匯入客戶端NLS_LANG設定進行轉換,如果必要,在資料插入資料庫之前會進行進一步轉換。
通常在匯出時最好把客戶端字符集設定得和資料庫端相同,這樣可以避免在匯出時發生不必要的資料轉換,匯出檔案將和資料庫具有相同的字符集。
即使將來會把匯出檔案匯入到不同字符集的資料庫中,這樣做也可以把轉換延緩至匯入時刻。
當進行資料匯入時,主要存在以下兩種情況:
1.源資料庫和目標資料庫具有相同字符集設定
這時,只需要設定NLS_LANG等於資料庫字符集即可匯入(前提是,匯出使用的是和源資料庫相同字符集,即三者相同)
2.源資料庫和目標資料庫字符集不同
如果我們匯出時候使用的NLS_LANG是和源資料庫相同的字符集,那麼匯入時就可以設定客戶端NLS_LANG等於匯出時使用的字符集,這
樣轉換隻發生在資料庫端,而且只發生一次。
例如:
如果進行從ZHS16GBK到UTF8的轉換
1)使用NLS_LANG=AMERICAN_AMERICA.ZHS16GBK匯出資料庫。
這時建立的匯出檔案包含ZHS16GBK的資料
2)匯入時使用NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
這時轉換僅發生在insert資料到UTF8的資料庫中。
以上假設的轉換隻在目標資料庫字符集是源資料庫字符集的超集時才能轉換。
參考文章:
http://www.itpub.net/thread-538197-1-1.html
http://www.itpub.net/viewthread.php?tid=276524&extra=page%3D1&page=1
資料庫. 如有我沒想到的其他情況,請大家提建議,我繼續完善測試實驗。
測試環境:
目標庫:英傑的rac測試庫 由
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
sys@rac1>select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------
AMERICAN_AMERICA.AL32UTF8
yang@rac1>select * from nls_database_parameters;
PARAMETER VALUE
------------------------- ----------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.2.0.1.0
20 rows selected.
源庫:
Release 11.1.0.6.0 - Production on Friday, 11 March, 2011 21:11:49
Conneted to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
源庫的nls_ 資訊:
sys@ORACL> select * from nls_database_parameters;
PARAMETER VALUE
------------------------- --------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.1.0.6.0
測試步驟:這裡主要是測試含有 漢字的資料從ZHS16GBK 匯入到 AL32UTF8 .
在源庫建立含有漢字的表:
yang@ORACL> create table chart ( val varchar2(20));
表已建立。
======建立英文字元資料
yang@ORACL> insert into chart
2 select dbms_random.string('l',15)
3 from dual
4 connect by level <50;
已建立49行。
======建立中文漢字資料
yang@ORACL> insert into chart
2 select '阿里雲' as val from
3 dual connect by level <50;
已建立49行。
yang@ORACL> select * from chart;
VAL
--------------------
ogqodcrhyqaesks
zifjvopjwwvydjf
oaosnvrzjazdmju
ihpjfwpgzxlbosn
igimjnzkjbaiivf
jxqmgavtpfmlphf
izgrniqmuejiysb
cydqjrbjldnsucq
sikpsorziznhyly
bxstvwdqrqmnylp
ziveucwqsjbmlpu
qdhdwjoxthivxoe
dqideijubqlzeel
qtuyuiwnjigrqcj
gzgamguukwgogib
ufrnfcdtcnmxatg
rpuhrxfzzwmajec
kqsawluuwltmdbf
mlkfeymlhbqsrwj
fokunjivnccjhls
drlkbryvpklhlst
vaigghwmwspounp
qpdslsjqszpasgg
cevwjirdyowhzep
gpktcxauilvpjym
oyrrpyxlroflksp
hqfctsysbpnzkfi
ufcqglfwqgvuwdv
nhloooihrndmrcu
grrtelwqpgnmazw
olzmdcotmziiphj
fmohaagtultvxon
lwsqzgofvhgzajm
vcdeoomgsrzfvjr
pzpfqhpenensoij
nbvxphjkufcvxmj
ydfknwhpnzzpvsw
xzhooomfumuckdc
rohspaowywmblti
dhjctrkkrdlyhvr
yzevspqkpuumjzh
xqmdpotvouvzgzl
rnvcrercdxybwlt
zhbdhamarftudbr
biykwlracluonab
hsdpycatadxhpft
wskchunnmvkbprh
butuurwduseffzc
fosmnbjannddffp
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
已選擇98行。
yang@ORACL> commit;
提交完成。
yang@ORACL> select dump('阿里雲') from dual;
DUMP('阿里雲')
-------------------------------------
Typ=96 Len=6: 176,162,192,239,212,198 ===三個 漢字 佔用6個位元組
===================匯出操作===================================
Microsoft Windows [版本 6.1.7600]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
C:\Users\aaaa>set nls_lang=american_america.al32utf8 這裡後面測試不加也可以成功匯入al32utf8
C:\Users\aaaa>expdp yang/yang tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp
Export: Release 11.1.0.6.0 - Production on Friday, 11 March, 2011 21:19:04
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "YANG"."SYS_EXPORT_TABLE_01": yang/******** tables=chart directory=dumpdir dumpfile=zhs16g
bk.dmp
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "YANG"."CHART" 6.484 KB 98 rows
Master table "YANG"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for YANG.SYS_EXPORT_TABLE_01 is:
D:\DUMP\ZHS16GBK.DMP
Job "YANG"."SYS_EXPORT_TABLE_01" successfully completed at 21:19:20
==============================匯入到目標庫=========================================
oracle@rac1:rac1 /tmp/dump>export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ==.bash_profile 檔案裡已經宣告瞭,這裡是強調一下。
oracle@rac1:rac1 /tmp/dump>impdp yang/yang tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp log=zhs16gbk_to_al32utf8.log
Import: Release 11.2.0.1.0 - Production on Fri Mar 11 21:23:13 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
Legacy Mode Active due to the following parameters:
Legacy Mode Parameter: "log=zhs16gbk_to_al32utf8.log" Location: Command Line, Replaced with: "logfile=zhs16gbk_to_al32utf8.log"
Master table "YANG"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
Starting "YANG"."SYS_IMPORT_TABLE_01": yang/******** tables=chart directory=dumpdir dumpfile=zhs16gbk.dmp
logfile=zhs16gbk_to_al32utf8.log
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "YANG"."CHART" 6.484 KB 98 rows
Job "YANG"."SYS_IMPORT_TABLE_01" successfully completed at 21:23:17
==============================在目標庫中驗證=======================================
sys@rac1>select dump('阿里雲') from dual;
DUMP('阿里雲')
-------------------------------------------------
Typ=96 Len=9: 233,152,191,233,135,140,228,186,145 阿里雲 三個漢字 佔用 9個位元組。
yang@rac1>select table_name from user_tables;
TABLE_NAME
------------------------------
CHARSET
CHART
yang@rac1>select val from chart;
VAL
----------------
ogqodcrhyqaesks
zifjvopjwwvydjf
oaosnvrzjazdmju
ihpjfwpgzxlbosn
igimjnzkjbaiivf
jxqmgavtpfmlphf
izgrniqmuejiysb
cydqjrbjldnsucq
sikpsorziznhyly
bxstvwdqrqmnylp
ziveucwqsjbmlpu
qdhdwjoxthivxoe
dqideijubqlzeel
qtuyuiwnjigrqcj
gzgamguukwgogib
ufrnfcdtcnmxatg
rpuhrxfzzwmajec
kqsawluuwltmdbf
mlkfeymlhbqsrwj
fokunjivnccjhls
drlkbryvpklhlst
vaigghwmwspounp
qpdslsjqszpasgg
cevwjirdyowhzep
gpktcxauilvpjym
oyrrpyxlroflksp
hqfctsysbpnzkfi
ufcqglfwqgvuwdv
nhloooihrndmrcu
grrtelwqpgnmazw
olzmdcotmziiphj
fmohaagtultvxon
lwsqzgofvhgzajm
vcdeoomgsrzfvjr
pzpfqhpenensoij
nbvxphjkufcvxmj
ydfknwhpnzzpvsw
xzhooomfumuckdc
rohspaowywmblti
dhjctrkkrdlyhvr
yzevspqkpuumjzh
xqmdpotvouvzgzl
rnvcrercdxybwlt
zhbdhamarftudbr
biykwlracluonab
hsdpycatadxhpft
wskchunnmvkbprh
butuurwduseffzc
fosmnbjannddffp
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
阿里雲
98 rows selected.
小結:字符集子集向其超集轉換是可行的,如此例 ZHS16GBK轉換為AL32UTF8。
匯出使用的字符集將會記錄在匯出檔案中,當檔案匯入時,將會檢查匯出時使用的字符集設定,如果這個字符集不同於匯入客戶端的NLS_LANG
設定,字符集將根據匯入客戶端NLS_LANG設定進行轉換,如果必要,在資料插入資料庫之前會進行進一步轉換。
通常在匯出時最好把客戶端字符集設定得和資料庫端相同,這樣可以避免在匯出時發生不必要的資料轉換,匯出檔案將和資料庫具有相同的字符集。
即使將來會把匯出檔案匯入到不同字符集的資料庫中,這樣做也可以把轉換延緩至匯入時刻。
當進行資料匯入時,主要存在以下兩種情況:
1.源資料庫和目標資料庫具有相同字符集設定
這時,只需要設定NLS_LANG等於資料庫字符集即可匯入(前提是,匯出使用的是和源資料庫相同字符集,即三者相同)
2.源資料庫和目標資料庫字符集不同
如果我們匯出時候使用的NLS_LANG是和源資料庫相同的字符集,那麼匯入時就可以設定客戶端NLS_LANG等於匯出時使用的字符集,這
樣轉換隻發生在資料庫端,而且只發生一次。
例如:
如果進行從ZHS16GBK到UTF8的轉換
1)使用NLS_LANG=AMERICAN_AMERICA.ZHS16GBK匯出資料庫。
這時建立的匯出檔案包含ZHS16GBK的資料
2)匯入時使用NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
這時轉換僅發生在insert資料到UTF8的資料庫中。
以上假設的轉換隻在目標資料庫字符集是源資料庫字符集的超集時才能轉換。
參考文章:
http://www.itpub.net/thread-538197-1-1.html
http://www.itpub.net/viewthread.php?tid=276524&extra=page%3D1&page=1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-689248/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 含有漢字的固定字元由ZHS16GBK資料庫匯入到AL32UTF8的資料庫字元資料庫
- 【exp/imp】將US7ASCII字符集的dmp檔案匯入到ZHS16GBK字符集的資料庫中ASCII資料庫
- 在不同字符集的資料庫之間匯入資料的方法(轉)資料庫
- plsql資料庫異常---plsql 登入後,提示資料庫字符集(AL32UTF8)和客戶端字符集(ZHS16GBK)不一致SQL資料庫客戶端
- oracle資料庫的字符集更改Oracle資料庫
- 修改資料庫字符集資料庫
- ORACLE 修改資料庫的字符集編碼為UTF-8Oracle資料庫
- mysql 5 資料庫匯出與字符集的問題。MySql資料庫
- Oracle817 版本 不同字符集之間的資料庫匯入 (轉)Oracle資料庫
- oracle資料庫字符集的轉換Oracle資料庫
- 資料庫字符集的選擇(轉)資料庫
- 修改Oracle資料庫字符集Oracle資料庫
- oracle資料庫字符集資訊Oracle資料庫
- 關於資料庫字符集資料庫
- 修改資料庫字符集(轉)資料庫
- oracle國家字符集與資料庫字符集Oracle資料庫
- itpub網友問題之AL32UTF8與ZHS16GBK 2種資料庫字符集database characterset資料庫Database
- Sql Server資料庫資料匯入到SQLite資料庫中Server資料庫SQLite
- Oracle資料庫字符集的全面認識Oracle資料庫
- 修改Oracle資料庫字符集(zt)Oracle資料庫
- 檢視oracle資料庫字符集Oracle資料庫
- Oracle資料庫字符集介紹Oracle資料庫
- Oracle資料庫字符集問題Oracle資料庫
- Oracle資料庫字符集淺析Oracle資料庫
- 怎樣修改資料庫字符集資料庫
- 匯入excel資源到資料庫Excel資料庫
- 不同字符集資料庫之間的資料同步問題:資料庫
- 【實驗】【MySQL】模擬將latin1字符集的資料庫修改為gbk字符集MySql資料庫
- 資料庫的匯入匯出資料庫
- Oracle資料匯入到Hive資料庫的操作方法OracleHive資料庫
- 關於java處理不同資料庫字符集的資料同步Java資料庫
- 不同字符集資料庫之間的資料同步問題-補資料庫
- 「Oracle」資料庫字符集編碼修改Oracle資料庫
- Oracle資料庫字符集問題解析Oracle資料庫
- 巧妙轉換ORACLE資料庫字符集Oracle資料庫
- Oracle資料庫字符集分析之一Oracle資料庫
- IIS 日誌匯入到資料庫的方法資料庫
- oracle 9i的資料庫的dmp匯入到10G資料庫Oracle資料庫