Oracle提供了高速导入导出数据泵IMPDP,EXPDP,记一次Oracle数据泵导出单表数据过程
1.设置导出文件所在或存放的位置
create directory JZSJ_DMP_DIR as '/home/oracle/jzsj';
eg:如果'/home/oracle/jzsj' 并不存在,则需要先创建该目录,且需赋予该目录读写权限
2. 对于创建的目录授予用户读写目录的权限
grant read,write on directory DMP_DIR to scott;
--这里用户(scott)自己指定
3.执行脚本
BEGIN
DECLARE
h1 NUMBER;
BEGIN
h1 := DBMS_DATAPUMP.OPEN('EXPORT', 'TABLE', NULL, NULL, 'COMPATIBLE');--导出单表
DBMS_DATAPUMP.SET_PARALLEL(h1, 1);
DBMS_DATAPUMP.ADD_FILE(h1, '导出的DMP文件名', '导出目录', NULL, 1);
DBMS_DATAPUMP.ADD_FILE(h1, '导出的日志文件名', '导出目录', NULL, 3);
DBMS_DATAPUMP.SET_PARAMETER(h1, 'INCLUDE_METADATA', 0);
DBMS_DATAPUMP.METADATA_FILTER(h1, 'SCHEMA_EXPR', 'IN (''数据库模式名'')');
DBMS_DATAPUMP.METADATA_FILTER(h1, 'NAME_EXPR', 'IN (''表名'')');
DBMS_DATAPUMP.DATA_FILTER(h1, 'SUBQUERY', '查询条件', '表名', '数据库模式名');
DBMS_DATAPUMP.SET_PARAMETER(h1, 'COMPRESSION', 'DATA_ONLY');--是否压缩数据
DBMS_DATAPUMP.START_JOB(h1);
DBMS_DATAPUMP.DETACH(h1);
END;
--------------------------------------
----- 示例
--------------------------------------
BEGIN
DECLARE
h1 NUMBER;
BEGIN
h1 := DBMS_DATAPUMP.OPEN('EXPORT', 'TABLE', NULL, NULL, 'COMPATIBLE');
DBMS_DATAPUMP.SET_PARALLEL(h1, 1);
DBMS_DATAPUMP.ADD_FILE(h1, 'JZSJ_'||to_char(sysdate,'yyyy-mm-dd')||'.DMP', 'DMP_DIR', NULL, 1);
DBMS_DATAPUMP.ADD_FILE(h1, 'JZSJ_'||to_char(sysdate,'yyyy-mm-dd')||'.LOG', 'DMP_DIR', NULL, 3);
DBMS_DATAPUMP.SET_PARAMETER(h1, 'INCLUDE_METADATA', 0);
DBMS_DATAPUMP.METADATA_FILTER(h1, 'SCHEMA_EXPR', 'IN (''PHONE'')');
DBMS_DATAPUMP.METADATA_FILTER(h1, 'NAME_EXPR', 'IN (''TB_INOUT_RESULT_HISTORY'')');
DBMS_DATAPUMP.DATA_FILTER(h1, 'SUBQUERY', 'WHERE CREATE_TIME < TO_DATE('''||TO_CHAR(MAX_TIME,'yyyy-MM-dd hh24:mi:ss')||''',''yyyy-MM-dd hh24:mi:ss'')', 'TB_INOUT_RESULT_HISTORY', 'PHONE');
DBMS_DATAPUMP.SET_PARAMETER(h1, 'COMPRESSION', 'DATA_ONLY');
DBMS_DATAPUMP.START_JOB(h1);
DBMS_DATAPUMP.DETACH(h1);
END;
4. 可到'/home/oracle/jzsj'目录查看生成的文件信息