按where条件用expdp导出表

本文介绍如何使用Oracle的EXPDP工具根据特定条件导出表数据。具体包括两个场景:一是根据时间范围导出emp_main表;二是导出与emp_main表关联的emp_detail表中相关记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按where条件用expdp导出表

情况1

emp_main表需要根据sendtime字段导出2018年的数据
参数文件emp_main.par的内容如下:

tables=emp_main
dumpfile=emp_main.dmp
logfile=emp_main.log
query="where sendtime between to_date('20180101','yyyymmdd') and to_date('20190101','yyyymmdd')"

执行导出的命令如下:
expdp 用户名/密码@服务名 directory=exp_dir parfile=emp_main.par

情况2

在导出2018年的emp_main表后,需要导出emp_detail中与之关联的数据,且exp_detail表没有日期字段,但与exp_main通过某字段相关联

参数文件emp_detail.par的内容如下

tables=emp_detail
dumpfile=emp_detail.dmp
logfile=emp_detail.log
query=(emp_detail:"where exists(select 1 from emp_main a where sheetkey = a.id and a.sendtime between to_date('20180101','yyyymmdd') and to_date('20190101','yyyymmdd'))")

执行导出的命令如下:
expdp 用户名/密码@服务名 directory=exp_dir parfile=emp_detail.par

其他说明

上述是用expdp命令。如果是exp,则需要将参数文件中的参数名改为如下:

tables=emp_main
file=emp_main.dmp
log=emp_main.log
query="where sendtime between to_date('20180101','yyyymmdd') and to_date('20190101','yyyymmdd')"

导出命令为:

exp 数据库用户名/密码@连接名 parfile=emp_main.par
### 如何使用 Oracle expdp 导出特定 Oracle 数据泵(Data Pump)是一个用于高效导出和导入数据库对象的工具。`expdp` 是数据泵导出工具,支持多种参数以满足不同的需求。以下是关于如何使用 `expdp` 导出特定的指南和示例。 #### 1. 基本语法 `expdp` 的基本语法如下: ```bash expdp username/password@connection_string DIRECTORY=directory_name DUMPFILE=dump_file_name LOGFILE=log_file_name [TABLES=table_list] ``` - **username/password**: 数据库用户的用户名和密码。 - **connection_string**: 数据库连接字符串,通常为 `@sid` 或服务名。 - **DIRECTORY**: 指定存储导出文件的目录对象[^1]。 - **DUMPFILE**: 导出文件的名称。 - **LOGFILE**: 日志文件的名称。 - **TABLES**: 需要导出,多个用逗号分隔[^2]。 #### 2. 示例:导出特定 假设需要从 `scott` 用户下导出 `emp` 和 `dept` ,并将结果保存到 `/u01/dumps/` 目录下的 `scott_tables.dmp` 文件中。 首先,确保已经创建了一个名为 `dump_dir` 的目录对象,并将其指向 `/u01/dumps/` 目录: ```sql CREATE DIRECTORY dump_dir AS '/u01/dumps/'; GRANT READ, WRITE ON DIRECTORY dump_dir TO scott; ``` 然后执行以下命令: ```bash expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=scott_tables.dmp LOGFILE=scott_tables.log TABLES=emp,dept ``` #### 3. 使用 REMAP_SCHEMA 参数 如果需要将一个模式中的导出并重新映射到另一个模式,可以使用 `REMAP_SCHEMA` 参数。例如,将 `scott` 模式下的 `emp` 导出并重新映射到 `hr` 模式: ```bash expdp system/admin DIRECTORY=dump_dir DUMPFILE=scott_to_hr.dmp LOGFILE=scott_to_hr.log TABLES=scott.emp REMAP_SCHEMA=scott:hr ``` #### 4. 导出时重命名 若需要在导出过程中重命名,可以使用 `REMAP_TABLE` 参数。例如,将 `scott.T_A` 导出并命名为 `EMPS`: ```bash expdp system/admin DIRECTORY=dump_dir DUMPFILE=rename_table.dmp LOGFILE=rename_table.log REMAP_TABLE=scott.T_A:EMPS ``` #### 5. 其他常用参数 - **QUERY**: 在导出时应用查询条件。例如,仅导出 `emp` 中 `deptno=10` 的记录: ```bash expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=query_emp.dmp LOGFILE=query_emp.log TABLES=emp QUERY=emp:"WHERE deptno = 10" ``` - **CONTENT**: 控制导出的内容类型。例如,仅导出元数据而不包括数据: ```bash expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=metadata_only.dmp LOGFILE=metadata_only.log CONTENT=METADATA_ONLY ``` ### 注意事项 - 确保指定的目录对象存在,并且用户对该目录具有读写权限。 - 如果导出包含外键约束,建议先禁用这些约束,完成导出后再重新启用[^3]。 - 使用 `expdp` 时,注意检查日志文件以确认导出过程是否成功[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值