資料泵對已經存在的表載入索引 imp 和impdp
這裡探討了使用imp 和impdp對含有索引的表的匯入的一點差別。
使用imp可以在表存在的情況下,不刪除表,且匯入表的資料和索引。
1)建立實驗表cust(已存在)
SQL> conn scott/yang
已連線。
SQL> select * from cust;
ID CUTNAME
---------- ----------
1 JANE
2 Jone
3 TOM
4 yang
5 yangyi
6 xiaonan
已選擇6行。
SQL> create index indcust_id on cust(id);
索引已建立。
2)匯出表
HOST exp scott/yang file=cust.dmp tables=cust
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即將匯出指定的表透過常規路徑...
. . 正在匯出表 CUST匯出了 6 行
成功終止匯出, 沒有出現警告。
SQL> drop index indcust_id;
索引已刪除
3)使用imp匯入表
SQL> HOST imp scott/yang file=cust.dmp tables=cust ignore=y
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
經由常規路徑由 EXPORT:V11.01.00 建立的匯出檔案
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
. 正在將 SCOTT 的物件匯入到 SCOTT
. 正在將 SCOTT 的物件匯入到 SCOTT
. . 正在匯入表 "CUST"匯入了 6 行
成功終止匯入, 沒有出現警告。
SQL> select * from cust;
ID CUTNAME
---------- ----------
1 JANE
2 Jone
3 TOM
4 yang
5 yangyi
6 xiaonan
1 JANE
2 Jone
3 TOM
4 yang
5 yangyi
6 xiaonan
已選擇12行。
SQL> select index_name from user_indexes
2 where table_name='CUST';
INDEX_NAME
------------------------------
INDCUST_ID
4)impdp的預設工作並非如此,監測到表存在時,impdp會跳過索引的建立
SQL> create table texp(id number,name varchar2(30));
表已建立。
SQL> insert into texp
2 select rownum,tname
3 from tab;
已建立9行。
SQL> commit;
提交完成。
SQL> create index indtexp_id on texp (id);
索引已建立。
5)匯出表
expdp scott/yang directory=dump dumpfile=scottexp.dp tables=texp
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "SCOTT"."SYS_EXPORT_TABLE_01": scott/******** directory=dump dumpfile=scotttexp.dmp tables=texp
正在使用 BLOCKS 方法進行估計...
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 64 KB
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
. . 匯出了 "SCOTT"."TEXP" 5.507 KB 9 行
已成功載入/解除安裝了主表 "SCOTT"."SYS_EXPORT_TABLE_01"
******************************************************************************
SCOTT.SYS_EXPORT_TABLE_01 的轉儲檔案集為:
F:\DUMP\SCOTTTEXP.DMP
作業 "SCOTT"."SYS_EXPORT_TABLE_01" 已於 23:29:38 成功完成
清除資料,並刪除索引:
SQL> drop index indtexp_id;
索引已刪除。
SQL> truncate table texp;
表被截斷。
6)然後再匯入表
impdp scott/yang directory=dump dumpfile=scottexp.dp tables=texp
SQL> select count(*) from texp;
COUNT(*)
----------
9
SQL> select index_name from user_indexes
2 where table_name='TEXP';
未選定行
資料雖然匯入了,但是索引沒有建立。不過要解決這個問題也很簡單,透過INCLUDE就可以解決這個問題:
SQL> truncate table texp;
表被截斷。
impdp scott/yang directory=dump dumpfile=scottexp.dp tables=texp table_exists_action=truncate include=index
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "SCOTT"."SYS_IMPORT_TABLE_01"
啟動 "SCOTT"."SYS_IMPORT_TABLE_01": scott/******** directory=dump dumpfile=scotttexp.dmp tables=texp table_exists_action=truncate include=index
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
作業 "SCOTT"."SYS_IMPORT_TABLE_01" 已於 23:35:39 成功完成
SQL> select count(*) from texp;
COUNT(*)
----------
0
SQL> select index_name from user_indexes
2 where table_name='TEXP';
INDEX_NAME
------------------------------
INDTEXP_ID
SQL> drop index indtexp_id;
索引已刪除。
impdp scott/yangdirectory=dump dumpfile=scotttexp.dmp tables=texp table_exists_action=truncate include=index include=table_data
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
已成功載入/解除安裝了主表 "SCOTT"."SYS_IMPORT_TABLE_01"
啟動 "SCOTT"."SYS_IMPORT_TABLE_01": scott/******** directory=dump dumpfile=scotttexp.dmp tables=texp table_exists_action=truncate include=index include=table_data
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "SCOTT"."TEXP" 5.507 KB 9 行
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
作業 "SCOTT"."SYS_IMPORT_TABLE_01" 已於 23:37:57 成功完成
最後檢查一下是否成功
SQL> select count(*) from texp;
COUNT(*)
----------
9
SQL> select index_name from user_indexes
2 where table_name='TEXP';
INDEX_NAME
------------------------------
INDTEXP_ID
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-664400/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- Oracle使用資料泵expdp,impdp進行資料匯出匯入Oracle
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫
- 使用impdp,expdp資料泵進入海量資料遷移
- 資料泵datapump(expdp/impdp)的parfile用法,避免跳脫字元字元
- ORACLE 資料泵impdp匯入報錯之ORA-31693 ORA-04098Oracle
- Oracle 11g impdp 先資料後索引匯入方法Oracle索引
- Oracle資料泵的匯入和匯出Oracle
- Linux下執行資料泵expdp和impdp命令,字元轉義案例兩則Linux字元
- 【Datapump】Oracle資料泵遷移資料命令參考(expdp/impdp說明)Oracle
- oracle10g expdp資料泵的bug,按schema匯出,匯入impdp時無jobOracle
- imp-匯入小寫字母的表
- oracle資料匯出匯入(exp/imp)Oracle
- 資料泵匯出匯入
- EXP、IMP、SQLLOADER、EXPDP、IMPDP、DBMS_METADATA、SQLPLUS等方面SQL
- 關於InnoDB表資料和索引資料的儲存索引
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- 對存在空值的列建索引索引
- Oracle 12c expdp和impdp匯出匯入表Oracle
- 資料庫——對索引的理解資料庫索引
- Redis Manager 接入已經存在的叢集Redis
- 細緻入微:如何使用資料泵匯出表的部分列資料
- oracle資料庫的impdp,expdpOracle資料庫
- InnoDB資料字典--字典表載入
- SAP中的資料庫表索引資料庫索引
- impdp導致主鍵索引的變化索引
- Oracle 19.3資料庫impdp匯入view時hang住Oracle資料庫View
- 資料庫系列:覆蓋索引和規避回表資料庫索引
- 獨家對話李飛飛:雲資料庫戰爭已經進入下半場資料庫
- 【資料泵】EXPDP匯出表結構(真實案例)
- 殺停資料泵
- oracle exp和impOracle
- 資料遷移(1)——通過資料泵表結構批量遷移
- Oracle用資料泵匯入資料包12899的錯誤碼解決方法Oracle
- 19c資料庫impdp匯入view時hang住資料庫View
- Oracle 28.6資料庫impdp匯入view時hang@11Oracle資料庫View
- 關注已經存在的人工智慧,而不是未來可能存在的人工智慧
- 資料庫表的唯一索引問題資料庫索引
- 然後再全庫匯入排除view資料庫在impdp匯入View資料庫