更多技術交流、求職機會、試用福利,歡迎關註位元組跳動數據平臺微信公眾號,回覆【1】進入官方交流群 需求背景 數據探查上線之前,數據驗證都是通過寫 SQL 方式進行查詢的,從編寫 SQL,到解析運行出結果,不僅時間長,還會反覆消耗計算資源,探查上線後,只需要一次探查,就可以得到整張表的探查報告,但後續我 ...
先認識一個單詞,schema:模式。
再來瞭解一個概念。
當創建一個用戶的時候,會同時創建一個與用戶同名的schema,這個schema的官方解釋是對象的集合。
舉個例子,比如說我就是一個用戶,叫A,住在某個公寓里,假如我住在4-404,那麼這個4-404這個房間就是schema,房間名也叫A(意思是用戶A的房間,在oracle里的意思是用戶A的schema)。那麼房間裡面的東西就是對象了,比如說桌子,冰箱,床之類的。所以說schema是對象的集合。(個人理解,不對之處,請以斧正)
在使用數據泵前設定一個directory,就是存放數據泵文件的目錄。
create directory data_dump as '/data_dump';
當然,也可以查看有哪些目錄
select directory_name,directory_path from dba_directories;
下麵來記一些參數
userid 說明使用的是哪個用戶進行操作
directory 說明使用的是哪個邏輯目錄(就是上面創建的那個)
dumpfile 導出後的文件名字
logfile 導出過程中的日誌文件
tables 導出的表
下麵是導出腳本及expdp
cat >exp_table.par<<EOF userid=' / as sysdba' directory=data_dump dumpfile=exp_table_%u.dmp logfile=exp_table.log tables=(scott.temp,scott.tjy_test) cluster=n parallel=4 exclude=STATISTICS compression=ALL EOF
nohup expdp parfile=exp_table.par>exp_table.par.out &
tail -100f exp_table.par.out
對上面參數進行解釋說明:
userid=' / as sydba' 說明用的是sys用戶執行的數據泵操作
directory=data_dump 說明操作路徑是data_dump(也就是上面創建的那個目錄)
dumpfile=exp_table_%u.dmp 這裡僅僅是說明導出後的文件命名,exp_表示這是導出的文件,table_表示表級操作,%u表示01-99的自動增長的整數,.dmp表示文件尾碼
logfile=exp_table.log 跟上面的解釋差不多。
tables=(scott.temp,scott.test) 說明要導出的是scott里的temp表和test表,註意這裡的scott指的是schema,而不是username
其他的沒什麼好說的,想學自己百度。
下麵是導入腳本及impdp
cat >imp_table.par<<EOF userid=' / as sysdba' directory=DATA_DUMP dumpfile=exp_table_%u.dmp logfile=imp_table.log TABLE_EXISTS_ACTION=append tables=(scott.temp,scott.test) remap_schema=scott:sys cluster=n parallel=8 EOF nohup impdp parfile=imp_table.par>imp_table.par.out & tail -100f imp_table.par.out
這個跟上面的其實沒多大改變,目錄還是那個目錄。
需要註意的是多了一行table_exists_action=append 這行表示在原有表的基礎上添加要導入的數據。
還有一行是remap_schema=scott:sys 重點是這裡,因為scott.temp的scott指的是schema,所以參數是remap_schema。 scott:sys的意思是在這些個數據泵文件里,schema是scott的,換成sys。