日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 Oracle Datapump API 实现数据导出

發布時間:2025/1/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 Oracle Datapump API 实现数据导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

??Oracle Datapump API 是基于PL/SQL實現的,是命令行方式下的補充。使用Datapump API可以將其邏輯備份特性將其集成到應用程序當中,
基于界面來實現有利于簡化其管理。本文主要描述的使用Datapump API描述各種不同情形的數據導出。

一、演示使用datapump api實現數據導出

--1、導出schema(schema模式)DECLAREl_dp_handle NUMBER;l_last_job_state VARCHAR2 (30) := 'UNDEFINED';l_job_state VARCHAR2 (30) := 'UNDEFINED';l_sts KU$STATUS;BEGIN--sepcified operation,job model_dp_handle :=DBMS_DATAPUMP.open (operation => 'EXPORT', job_mode => 'SCHEMA' , remote_link => NULL, job_name => 'JOB_EXP1', version => 'LATEST');--specified dumpfile and dump directoryDBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'scott_schema.dmp', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);--specified log file and dump directoryDBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'scott_schema.log', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);--specified fliter for schemaDBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'SCHEMA_EXPR', VALUE => 'IN (''SCOTT'')');DBMS_DATAPUMP.start_job (l_dp_handle);DBMS_DATAPUMP.detach (l_dp_handle);END;/--2、導出特定表table(表模式)DECLAREl_dp_handle NUMBER;l_last_job_state VARCHAR2 (30) := 'UNDEFINED';l_job_state VARCHAR2 (30) := 'UNDEFINED';l_sts KU$STATUS;BEGINl_dp_handle :=DBMS_DATAPUMP.open (operation => 'EXPORT', job_mode => 'TABLE', remote_link => NULL, job_name => 'JOB_EXP2', version => 'LATEST');DBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'emp_tbl.dmp', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);DBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'emp_tbl.log', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);-->如果非當前帳戶,使用下面的過濾條件,即特定schema下的特定表,如為當前帳戶,此過濾條件可省略DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'SCHEMA_EXPR', VALUE => 'IN(''SCOTT'')');DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'NAME_EXPR', VALUE => 'IN(''EMP'')');DBMS_DATAPUMP.start_job (l_dp_handle);DBMS_DATAPUMP.detach (l_dp_handle);END;/--3、導出schema并過濾掉特定表(使用非當前帳戶導出時應過濾schema)DECLAREl_dp_handle NUMBER;BEGINl_dp_handle :=DBMS_DATAPUMP.open (operation => 'EXPORT', job_mode => 'SCHEMA');DBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'scott_filter.dmp', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);DBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'scott_filter.log', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'SCHEMA_LIST', VALUE => ' ''SCOTT'' ');DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'NAME_EXPR', VALUE => ' !=''EMP'' ', object_type => 'TABLE');DBMS_DATAPUMP.start_job (l_dp_handle);END;/--4、導出當前schema下的所有表并過濾特定表DECLAREl_dp_handle NUMBER;BEGINl_dp_handle :=DBMS_DATAPUMP.open (operation => 'EXPORT', job_mode => 'TABLE');DBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'scott_filter_2.dmp', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);DBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'scott_filter_2.log', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'NAME_EXPR', VALUE => ' !=''EMP'' ');DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'NAME_EXPR', VALUE => ' !=''DEPT'' ');DBMS_DATAPUMP.start_job (l_dp_handle);DBMS_DATAPUMP.detach (l_dp_handle);END;/--5、批量過濾當前用戶下的特定表DECLAREl_dp_handle NUMBER;BEGINl_dp_handle :=DBMS_DATAPUMP.open (operation => 'EXPORT', job_mode => 'TABLE');DBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'scott_filter_3.dmp', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);DBMS_DATAPUMP.add_file (handle => l_dp_handle, filename => 'scott_filter_3.log', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'NAME_EXPR', VALUE => ' NOT LIKE ''T%'' ');DBMS_DATAPUMP.start_job (l_dp_handle);DBMS_DATAPUMP.detach (l_dp_handle);END;//**************************************************//* Author: Robinson Cheng *//* Blog: http://blog.csdn.net/robinson_0612 *//* MSN: robinson_0612@hotmail.com *//* QQ: 645746311 *//**************************************************/ --6、過濾特定表上的特定行 --現在表tb_emp上HIREDATE為日期型,需要按日期進行過濾scott@CNMMBO> desc tb_empName Null? Type----------------------------------------- -------- ----------------------------EMPNO NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE VARCHAR2(10)SAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)scott@CNMMBO> select empno,ename,hiredate from tb_emp;EMPNO ENAME HIREDATE---------- ---------- ----------9999 Ro.Ch7369 SMITH 198012177499 ALLEN 198102207521 WARD 198102227566 JONES 198104027654 MARTIN 198109287698 BLAKE 198105017782 CLARK 198106097788 SCOTT 198704197839 KING 198111177844 TURNER 198109087876 ADAMS 198705237900 JAMES 198112037902 FORD 198112037934 MILLER 1982012315 rows selected.scott@CNMMBO> select count(*) from tb_emp where hiredate>='19810311';COUNT(*)----------11DECLAREl_dp_handle NUMBER;BEGINl_dp_handle :=DBMS_DATAPUMP.open (operation => 'EXPORT', job_mode => 'TABLE');dbms_datapump.add_file (handle => l_dp_handle, filename => 'scott_tb_emp.dmp', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$file_type_dump_file);dbms_datapump.add_file (handle => l_dp_handle, filename => 'scott_tb_emp.log', directory => 'DB_DUMP_DIR', filetype => DBMS_DATAPUMP.KU$file_type_log_file);DBMS_DATAPUMP.metadata_filter (handle => l_dp_handle, name => 'NAME_EXPR', VALUE => ' =''TB_EMP'' ', object_type => 'TABLE');DBMS_DATAPUMP.data_filter( handle => l_dp_handle, name => 'SUBQUERY', VALUE => 'WHERE HIREDATE >=''19810311''', table_name => 'TB_EMP' ); DBMS_DATAPUMP.start_job (l_dp_handle);DBMS_DATAPUMP.detach (l_dp_handle);END;//*oracle@SZDB:/u02/database/CNMMBO/BNR/dump> more scott_tb_emp.logStarting "SCOTT"."SYS_EXPORT_TABLE_01": Estimate in progress using BLOCKS method...Processing object type TABLE_EXPORT/TABLE/TABLE_DATATotal estimation using BLOCKS method: 64 KBProcessing object type TABLE_EXPORT/TABLE/TABLEProcessing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS. . exported "SCOTT"."TB_EMP" 7.695 KB 11 rowsMaster table "SCOTT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded******************************************************************************Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:/u02/database/CNMMBO/BNR/dump/scott_tb_emp.dmpJob "SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at 17:33:23 */--7、批量過濾特定表上的特定行 --將下面的代碼包含在PL/SQL塊中,使用游標循環來傳遞需要過濾的表的名字從而生成多個過濾條件 --下面的PL/SQL塊中所有包含ARC字符的表上的特定日期v_split_date的記錄才能被導出FOR tab_cur IN (SELECT table_name, num_rowsFROM dba_tablesWHERE table_name LIKE '%ARC%' AND owner='GOEX_ADMIN')LOOPdbms_datapump.data_filter (handle => hand,name => 'SUBQUERY',VALUE => 'WHERE BUSINESS_DATE >= ''' || v_split_date || '''',table_name => '' || tab_cur.table_name || '');END LOOP;--8、錯誤處理 --如果定義了job_name則經常會碰到下列錯誤,如果未指定job_name則有系統自動生成job_name,并由系統自動管理job_nameDECLARE*ERROR at line 1:ORA-31634: job already existsORA-06512: at "SYS.DBMS_SYS_ERROR", line 79ORA-06512: at "SYS.DBMS_DATAPUMP", line 911ORA-06512: at "SYS.DBMS_DATAPUMP", line 4354ORA-06512: at line 7scott@CNMMBO> ho oerr ora 31634/*31634, 00000, "job already exists"// *Cause: Job creation or restart failed because a job having the selected // name is currently executing. This also generally indicates that// a Master Table with that job name exists in the user schema. Refer// to any following error messages for clarification.// *Action: Select a different job name, or stop the currently executing job // and re-try the operation (may require a DROP on the Master Table). */scott@CNMMBO> select table_name from user_tables where table_name like 'JOB%';TABLE_NAME------------------------------JOB_EXPscott@CNMMBO> drop table job_exp;drop table job_exp*ERROR at line 1:ORA-00054: resource busy and acquire with NOWAIT specifiedscott@CNMMBO> SELECT DISTINCT object_name2 || ' '3 || locked_mode4 || ' '5 || ctime6 || ' '7 || c.SID8 || ' '9 || serial#10 FROM v$locked_object a, dba_objects b, v$lock c, v$session d11 WHERE a.object_id = b.object_id12 AND c.SID = a.session_id13 AND c.SID = d.SID;OBJECT_NAME||''||LOCKED_MODE||''||CTIME||''||C.SID||''||SERIAL# -----------------------------------------------------------------------JOB_EXP 3 552 1075 799scott@CNMMBO> alter system kill session '1075,799';System altered.scott@CNMMBO> drop table job_exp purge; -->刪除表之后再次進行導出Table dropped. 9、使用視圖監控datapump狀態scott@CNMMBO> col owner_name format a15scott@CNMMBO> col operation format a15scott@CNMMBO> col state format a20scott@CNMMBO> select owner_name,job_name,operation,job_mode,state,degree from dba_datapump_jobs;OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE DEGREE--------------- --------------- --------------- ---------- -------------------- ----------SCOTT JOB_EXP1 EXPORT SCHEMA EXECUTING 110、使用下面的過程設定并行度DBMS_DATAPUMP.set_parallel (hand, 1);11、上述操作所在的演示環境scott@CNMMBO> select * from v$version where rownum<2;BANNER----------------------------------------------------------------Oracle Database 10g Release 10.2.0.3.0 - 64bit Production

二、幾點注意事項
1、使用schema模式導出時,如果導出的schema為當前schema,則不需要指定schema過濾條件,否則需要對schema進行過濾
2、使用table表模式導出時,如果導出的表為當前schema,則不需要指定schema過濾條件,否則需要對schema進行過濾
3、對于過濾表上的特定記錄可以使用多種SQL表達式,如 LIKE, NOT LIKE,IN, NOT IN, = , != 符號等
4、需要注意單引號的使用,尤其是在字符型的數據類型時,兩個單引號代表一個引號
5、如果在導出時存在同樣的dump文件和日志文件時PL/SQL塊將執行失敗,刪除或通過寫PL/SQL來判斷文件是否存在,如存在是否覆蓋等
6、如果指定了job_name,則當前drop失敗之后,再次執行時會碰到job已經存在的提示,建議讓系統自動生成job_name簡化管理

三、更多參考

數據泵 EXPDP 導出工具的使用

數據泵 IMPDP 導入工具的使用

expdp impdp中 exclude/include 的使用

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_datpmp.htm
https://forums.oracle.com/forums/thread.jspa?threadID=837324
http://psoug.org/reference/dbms_datapump.html

?


原文鏈接: http://blog.csdn.net/robinson_0612/article/details/7195849

轉載于:https://my.oschina.net/dtec/blog/47319

總結

以上是生活随笔為你收集整理的使用 Oracle Datapump API 实现数据导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天干天天日夜夜操 | 午夜在线国产 | 人人澡人人透人人爽 | 农村搞破鞋视频大全 | 亚洲男人的天堂av | 免费一级做a爰片久久毛片潮 | 97欧美视频 | 久久99久 | 亚洲图片一区二区三区 | 国产 欧美 日韩 一区 | 香蕉精品视频在线观看 | 成人在线观看免费 | 欧美成人秋霞久久aa片 | 在线观看色网 | 欧美a一级| 国产精九九网站漫画 | 国产在线xx | 日本精品人妻无码免费大全 | 亚洲成肉网| 天天看毛片 | 国产成人毛毛毛片 | 日韩成人免费在线观看 | 特级西西人体4444xxxx | 凹凸精品一区二区三区 | 日日摸日日 | 一级片网址 | 日韩在线专区 | 亚洲天堂自拍 | 成人免费一区 | 欧美久久久久久久久久久 | av资源网址 | 杏导航aⅴ福利网站 | 亚洲 激情 小说 另类 欧美 | 亚洲丝袜色图 | 精品三级| 亚洲天堂一区二区在线 | 国产福利在线免费观看 | 日本成人在线网站 | 黄色网页入口 | 黄色私人影院 | 台湾男男gay做爽爽的视频 | 日韩成人精品视频 | 色眯眯视频 | 国产成人av影院 | 精品免费在线观看 | 日本三级网站在线观看 | 国产精品熟女视频 | 国产精品超碰 | 国产精品久久久久久久久免费相片 | 在线91av| 欧美大黄视频 | 日韩在线观看第一页 | 二区中文字幕 | 午夜一区二区三区 | 未满十八岁勿进 | 成人在线91 | 色悠悠在线视频 | 黑人狂躁日本妞hd | 国产美女无遮挡永久免费观看 | 色香欲综合网 | 无码人妻精品丰满熟人区 | 亚洲理伦电影 | 国产精品高潮呻吟久久av野狼 | 99国产在线| 99热导航| 成人性生活毛片 | 女人裸体又黄 | 自拍视频在线播放 | 亚洲一区二区三区av无码 | 日韩综合精品 | 日韩av不卡在线观看 | 我不卡一区二区 | 在线a免费 | 自拍偷拍第二页 | 亚洲码欧美码一区二区三区 | 欧美激情亚洲 | 成人综合区一区 | 欧美国产日韩在线观看 | 中文字幕免费高清视频 | 久久精品亚洲无码 | 亚洲涩涩在线 | 国语对白91 | 人人插人人草 | 男人爆操女人 | 午夜国产在线观看 | 人人草人人草 | 男人狂揉女人下部视频 | 欧美永久视频 | 秋霞欧美一区二区三区视频免费 | 少妇一级淫免费播放 | 精品一区在线视频 | 日韩 欧美 中文 | 国产一区资源 | 五月天婷婷导航 | 亚洲v在线观看 | 欧美一级日韩 | 免费成人看片 | 日韩中文一区二区三区 | 久久久久亚洲av无码麻豆 |