EXP/IMP 學習(四)
1.4 常見問題
1. 字符集問題
ORACLE 多國語言設定是為了支援世界範圍的語言與字符集,一般對語言提示, 貨幣形式,排序方式和 CHAR,VARCHAR2,C LOB,LONG 欄位的資料的顯示等有效。 ORACLE 的多國語言設定最主要的兩個特性就是國家語言設定與字符集設定,國家語 言設定決定了介面或提示使用的語言種類,字符集決定了資料庫儲存與字符集有關資料(如文字)時候的編碼規則。
ORACLE 字符集設定,分為資料庫字符集和客戶端字符集環境設定。在資料庫端,
字符集在建立資料庫的時候設定,並儲存在資料庫 props$表中。
在客戶端的字符集環境比較簡單,主要就是環境變數或登錄檔項 NLS_ LANG,注 意 NLS_LANG的優先順序別為:引數檔案使用一點點技巧,就可以使匯出/匯入在不同的字符集的資料庫上轉換資料。這裡
需要一個 2進位制檔案編輯工具即可,如 uedit32。用編輯方式開啟匯出的 dmp檔案,獲取 2 、 3 位元組 的 內容 , 如 00 01 , 先 把 它 轉換 為 10 進 制 數, 為 1 ,使用 函 數
NLS_CHARSET_NAME 即可獲得該字符集: SQL> select nls_charset_name(1) from dual; NLS_CHARSET_NAME(1)
------------------- US7ASCII
可以知道該 dmp檔案的字符集為 US7ASCII,如果需要把該 dmp檔案的字符集換
成 ZHS16GBK,則需要用 NLS_CHARSET_ID 獲取該字符集的編號: SQL> select nls_charset_id('zhs16gbk') from dual; NLS_CHARSET_ID('ZHS16GBK')
--------------------------
把 852換成 16進位制數,為 354,把 2、3位元組的 00 01 換成 03 54,即完成了把該 dmp檔案字符集從 us7ascii 到 zhs16gbk 的轉化,這樣,再把該 dmp檔案匯入到 zhs16gbk 字符集的資料庫就可以了。
2. 版本問題
Exp/Imp 很多時候,可以跨版本使用,如在版本 7與版本 8之間匯出匯入資料,但 這樣做必須選擇正確的版本,規則為:
·總是使用 IMP的版本匹配資料庫的版本,如果要匯入到 816,則使用 816的匯入工 具。
·總是使用 EXP 的版本匹配兩個資料庫中低的那個版本,如在 815與 816之間互導,則使用 815的 EXP 工具
imp和 exp版本不能往上相容: imp 可以匯入低版本 exp生成的檔案, 不能匯入高版本 exp生成的檔案。
2.1 基本知識
Oracle 的 SQL* LOADER 可以將外部格式化的文字資料載入到資料庫表中。通常 與 SPOOL匯出文字資料方法配合使用。
1.命令格式
SQLLDR keyword=value [,keyword=value,...]
例:
$ sqlldr user/pwd control=emp.ctl data=emp.dat bad=emp.bad log=emp.log
2.控制檔案
SQL*LOADER 根據控制檔案可以找到需要載入的資料。並且分析和解釋這些數
據。
控制檔案由三個部分組成,具體引數參考幫助文件:
1. 全域性選件,行,跳過的記錄數等;
2. INFILE 子句指定的輸入資料;
3. 資料特性說明。
comment: --註釋
例:
load data infile *
append --除了 append外,還有 insert、replace、truncate等方式
into table emp
fields terminated b y ‘|’
(
no float external, name char(20),
age integer external,
duty char(1),
salary float external,
upd_ts date(14) ‘YYYYMMDDHH24MISS’
)
begindata
100000000003|Mulder|000020|1|000000005000|20020101000000
100000000004|Scully|000025|2|000000008000|20020101235959
控制檔案中 infile選項跟 sqlldr 命令列中 data 選項含義相同,如使用 infile *則表明
資料在本控制檔案以 begin data 開頭的區域內。 一些選項:
FIELDS TERMINATED BY WHITESPACE FIELDS TERMINATED BY x'09'
FILLER_1 FILLER, // 指定某一列將不會被裝載
DEPTNO position(1:2), DNAME position(*:16), // 指定列的位置
SEQNO RECNUM //載入每行的行號
SKIP n // 指定匯入時可以跳過多少行資料
3.資料檔案
按控制檔案資料格式定義的資料行集,例:
100000000001|Tom|000020|1|000000005000|20020101000000
100000000002|Jerry|000025|2|000000008000|20020101235959
固定格式、可變格式、流記錄格式:
固定格式:
當資料固定的格式(長度一樣)時且是在檔案中得到時,要用 INFILE "fix n"
load data
infile 'example.dat' "fix 11"
into table example
fields terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7)) example.dat:
001, cd, 0002,fghi,
00003,lmn,
1, "pqrs",
0005,uvwx,
可變格式:
當資料是可變格式(長度不一樣)時且是在檔案中得到時,要用 INFILE "var n"。如:
load data
infile 'example.dat' "var 3"
into table example
fields terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7)) example.dat:
009hello,cd,010world,im,
012my,name is,
流記錄格式: // Stream-recored format:
load data infile 'xx.dat' "str '|\n'"
into table xx field terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7))
example.dat:
hello, ccd,|
world, bb,|
4. 壞檔案
bad=emp.bad
壞檔案包含那些被 SQL*Loader拒絕的記錄。被拒絕的記錄可能是不符合要求的記
錄。
5. 日誌檔案及日誌資訊
log=emp.log
當 SQL*Loader 開始執行後,它就自動建立 日誌檔案。日誌檔案包含有載入的總 結,載入中的錯誤資訊等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-666324/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- EXP/IMP 學習(五)
- EXP/IMP 學習(三)
- EXP/IMP 學習(二)
- EXP/IMP 學習(一)
- EXP/IMP 學習(六)
- 關於exp/imp的總結學習
- exp/imp工具
- Oracle imp/expOracle
- 【EXP/IMP】使用EXP /IMP工具“模糊”匯出和匯入
- oracle exp和impOracle
- oracle imp和expOracle
- exp imp資料
- oracle exp imp 用法Oracle
- EXP&IMP PIPE
- 【exp/imp不同版本】Oracle不同版本的exp/imp使用注意事項Oracle
- exp和imp詳解
- 淺談exp/imp(上)
- 淺談exp/imp(下)
- exp/imp命令詳解
- exp/imp工具的使用
- IMP和EXP筆記筆記
- exp_imp實戰
- Oracle的exp/imp詳解Oracle
- exp,imp 遷移資料
- imp/exp資料遷移
- oracle exp_imp小記Oracle
- 大表exp/imp遷移
- imp/exp命令 詳解(1)
- 理解exp, imp 使用direct=y 及imp commit=yMIT
- ORACLE exp/imp匯入報錯IMP-00009&IMP-00028&IMP-00015Oracle
- exp,imp相關工具說明
- RMAN與exp / imp的區別
- expdp\impdp及exp\imp 詳解
- Oracle Exp/Imp常見問題Oracle
- 轉:Exp/Imp工具效能調優
- 老外的EXP&IMP總結
- exp和imp的詳細操作
- 24.EXP和IMP(筆記)筆記