要了解impdp,請先了解導出,我之前作過導出的筆記:oracle
10g數據泵之expdp。這兩個筆記也許只對程序員有用,通常用於把正式區的數據導入到測試區,對數據庫管理員也許幫助不大,他們使用這些工具大多是用於數據備份。
impdp可以將數據加載到整個數據庫、特定的方案(也就是用戶)、特定的表空間或者特定的表,也可以將表空間傳輸到數據庫。impdp支持網絡模式操作,即從另一個數據庫加載數據。
使用impdp導入數據
1.指定轉儲文件(存放導出數據的文件)存放的目錄
SQL>connect sys/password as sysdba;
SQL>create directory dump_dir as ‘d:\dump’;
2.使用impdp命令
開始-->運行-->cmd
impdp username/password parameter1[,parameter2,….]
其中,username表示用戶名;password表示用戶密碼;parameter1和parameter2表示參數。參數的類型有近40個,可以使用命令impdp help=y查看所有參數和參數的含義。下面介紹一些對導入數據庫和表需要的常用參數,它們的含義和在expdp中的含義完全相同。
content :指定導入的內容。語法格式:content={all| data_only|metadate_only}。其中all表示導入對象定義及其數據,data_only表示只導入對象數據,metadate_only表示只導入對象定義。默認為all
directory:指定轉儲文件和日志文件所在的默認位置(也就是保存數據的文件位置)。語法格式:directory=direcotry_object。direcotry_object 是create directory語句創建的目錄對象。
dumpfile:指定轉儲文件的名稱。語法格式:dumpfile=[ direcotry_object:]file_name[,….]。direcotry_object默認為上面directory參數指定的目錄對 象。file_name默認名稱是expdat.dmp。如果導入文件過大,可以指定多個文件名,如 direcotry_object:mydb_%U.dmp。”%U”是一個占位符,使用這種方式不會出現同名的文件。
logfile:指定日志文件的名稱。語法格式:logfile=[ direcotry_object:]file_name。direcotry_object默認為directory參數指定的目錄對象。file_name日志文件,默認名稱是export.log。
exclude:導入時要排除的對象。語法格式: exclude=object_type[:name_clause][,….]。object_type表示對象類型,如table、view、 index、function、preocedure,name_clause表示使用SQL語句,指定對象名的篩選條件,如table:”like ‘emp%’”表示排除emp開始的任何表。
include:導入時要包含的對象。語法格式:include =object_type[:name_clause][,….]。object_type和name_clause含義同exclude參數解釋一樣。include和exclude不可以同時使用。當一個對象被包含時,所有相關對象也被包含。
network_link:指定網格導入時的數據庫鏈接名。語法格式:network_link=database_link。database_link表示遠程數據庫鏈接名。
query:指定導入數據的where條件。語法格式:query=[schema.][table_name:]query_clause。其中 schema表示方案名,也就是用戶名,table_name表示表名,query_clause表示條件子句,即where子句。
tables:指定導入表。語法格式:tables=[schema.]table_name[,….]。schema表示方案名,table_name表示表名
full:指定是否將整個數據庫導入。語法格式:full={y|n}。y表示執行數據庫導入,n表不執行。默認為n。
parfile:指定導入參數文件名。把impdp命令所需的參數寫在一個文件中,執行impdp命令時指定這個文件,而不用指定各種參數
導入實例
順便把expdp命令也寫進來,以方便對比。為了不和上一篇導出筆記重復,這里以導入遠程數據庫的數據到本地數據庫為例。
導出遠程數據庫
1.估算轉儲文件大小
如果數據庫很大,這個過程也許會執行很久。在導出數據庫之前,最好先估算一下轉儲文件(導出到的文件)的大小,以便確定合適filesize參數值,和確定是否有足夠的磁盤空間。使用語法:
expdp username/password@234DB full=y estimate_only=y nologfile=y;
其中estimate_only=y表示只估算轉儲文件的占的磁盤空間,不執行導出操作;@234DB表示遠程數據庫,它是在tnsnames.ora文件中定義的。
2.導出數據庫
expdp username/password@234DB directory=dump_dir dumpfile=mydb_%U.dmp logfile=mydb.log filesize=200m full=y
其中dump_dir表示導出文件的目錄,由於這里是導出遠程數據庫,所以這個目錄是在遠程機子中的;%U是一個占位符,表示01~99的兩位數,這時執行會創建如MYDB_21.DMP之類的文件
3.導入整個數據庫
impdp username/password directory=dump_dir dumpfile=mydb_%U.dmp full=y;
其中dump_dir表示入出文件的目錄,這里要把遠程導出的文件拷貝到本地機子上
導入遠程表
1.導出表
expdp username/password@234DB directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp
其中schemas表示方案(即用戶),emp表示遠程數據庫名。使用這種方式轉儲文件將保存在遠程服務器的操作系統中。如果要把轉儲文件保存到本地機子,使用以下語法:
expdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp network_link=to234db
其中username/password分別是本機數據庫用戶名和密碼,to234db是本地數據庫指向遠程數據庫的database link。這種方式可以把數據保存到本機中,但是會產生網絡流量。
2.導入表
impdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp
其中schemas要和遠程用戶名相同,也就是說如果本地沒有這個用戶,要先創建用戶,格式如:
grant connect,resource to schemas identified by password。emp是要導入的表,如果本地schemas方案已經存在要導入的表,可以指定tables_exists_action參數,使用格 式是tables_exists_action={skip|append|truncate|replace}這四個參數值分別表示忽略這個表、把記錄 追加到該表后面、先刪除表數據再追加記錄和使用新表替代已經存在的表。
come from:http://blog.sina.com.cn/s/blog_5016113a0100an7p.html
impdp可以將數據加載到整個數據庫、特定的方案(也就是用戶)、特定的表空間或者特定的表,也可以將表空間傳輸到數據庫。impdp支持網絡模式操作,即從另一個數據庫加載數據。
使用impdp導入數據
1.指定轉儲文件(存放導出數據的文件)存放的目錄
SQL>connect sys/password as sysdba;
SQL>create directory dump_dir as ‘d:\dump’;
2.使用impdp命令
開始-->運行-->cmd
impdp username/password parameter1[,parameter2,….]
其中,username表示用戶名;password表示用戶密碼;parameter1和parameter2表示參數。參數的類型有近40個,可以使用命令impdp help=y查看所有參數和參數的含義。下面介紹一些對導入數據庫和表需要的常用參數,它們的含義和在expdp中的含義完全相同。
content :指定導入的內容。語法格式:content={all| data_only|metadate_only}。其中all表示導入對象定義及其數據,data_only表示只導入對象數據,metadate_only表示只導入對象定義。默認為all
directory:指定轉儲文件和日志文件所在的默認位置(也就是保存數據的文件位置)。語法格式:directory=direcotry_object。direcotry_object 是create directory語句創建的目錄對象。
dumpfile:指定轉儲文件的名稱。語法格式:dumpfile=[ direcotry_object:]file_name[,….]。direcotry_object默認為上面directory參數指定的目錄對 象。file_name默認名稱是expdat.dmp。如果導入文件過大,可以指定多個文件名,如 direcotry_object:mydb_%U.dmp。”%U”是一個占位符,使用這種方式不會出現同名的文件。
logfile:指定日志文件的名稱。語法格式:logfile=[ direcotry_object:]file_name。direcotry_object默認為directory參數指定的目錄對象。file_name日志文件,默認名稱是export.log。
exclude:導入時要排除的對象。語法格式: exclude=object_type[:name_clause][,….]。object_type表示對象類型,如table、view、 index、function、preocedure,name_clause表示使用SQL語句,指定對象名的篩選條件,如table:”like ‘emp%’”表示排除emp開始的任何表。
include:導入時要包含的對象。語法格式:include =object_type[:name_clause][,….]。object_type和name_clause含義同exclude參數解釋一樣。include和exclude不可以同時使用。當一個對象被包含時,所有相關對象也被包含。
network_link:指定網格導入時的數據庫鏈接名。語法格式:network_link=database_link。database_link表示遠程數據庫鏈接名。
query:指定導入數據的where條件。語法格式:query=[schema.][table_name:]query_clause。其中 schema表示方案名,也就是用戶名,table_name表示表名,query_clause表示條件子句,即where子句。
tables:指定導入表。語法格式:tables=[schema.]table_name[,….]。schema表示方案名,table_name表示表名
full:指定是否將整個數據庫導入。語法格式:full={y|n}。y表示執行數據庫導入,n表不執行。默認為n。
parfile:指定導入參數文件名。把impdp命令所需的參數寫在一個文件中,執行impdp命令時指定這個文件,而不用指定各種參數
導入實例
順便把expdp命令也寫進來,以方便對比。為了不和上一篇導出筆記重復,這里以導入遠程數據庫的數據到本地數據庫為例。
導出遠程數據庫
1.估算轉儲文件大小
如果數據庫很大,這個過程也許會執行很久。在導出數據庫之前,最好先估算一下轉儲文件(導出到的文件)的大小,以便確定合適filesize參數值,和確定是否有足夠的磁盤空間。使用語法:
expdp username/password@234DB full=y estimate_only=y nologfile=y;
其中estimate_only=y表示只估算轉儲文件的占的磁盤空間,不執行導出操作;@234DB表示遠程數據庫,它是在tnsnames.ora文件中定義的。
2.導出數據庫
expdp username/password@234DB directory=dump_dir dumpfile=mydb_%U.dmp logfile=mydb.log filesize=200m full=y
其中dump_dir表示導出文件的目錄,由於這里是導出遠程數據庫,所以這個目錄是在遠程機子中的;%U是一個占位符,表示01~99的兩位數,這時執行會創建如MYDB_21.DMP之類的文件
3.導入整個數據庫
impdp username/password directory=dump_dir dumpfile=mydb_%U.dmp full=y;
其中dump_dir表示入出文件的目錄,這里要把遠程導出的文件拷貝到本地機子上
導入遠程表
1.導出表
expdp username/password@234DB directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp
其中schemas表示方案(即用戶),emp表示遠程數據庫名。使用這種方式轉儲文件將保存在遠程服務器的操作系統中。如果要把轉儲文件保存到本地機子,使用以下語法:
expdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp network_link=to234db
其中username/password分別是本機數據庫用戶名和密碼,to234db是本地數據庫指向遠程數據庫的database link。這種方式可以把數據保存到本機中,但是會產生網絡流量。
2.導入表
impdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp
其中schemas要和遠程用戶名相同,也就是說如果本地沒有這個用戶,要先創建用戶,格式如:
grant connect,resource to schemas identified by password。emp是要導入的表,如果本地schemas方案已經存在要導入的表,可以指定tables_exists_action參數,使用格 式是tables_exists_action={skip|append|truncate|replace}這四個參數值分別表示忽略這個表、把記錄 追加到該表后面、先刪除表數據再追加記錄和使用新表替代已經存在的表。
come from:http://blog.sina.com.cn/s/blog_5016113a0100an7p.html