关于expdp 中query用法小结
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,今天看到群里有人问到关于在使用expdp导出数据中使用query参数报错的解决方法,自己也出于好奇心瞎折腾了一把,现记录如下1.第一次尝试的时候[oracle@DB ~]$ expdp scott/s
千家信息网最后更新 2025年01月21日关于expdp 中query用法小结
今天看到群里有人问到关于在使用expdp导出数据中使用query参数报错的解决方法,自己也出于好奇心瞎折腾了一把,现记录如下
1.第一次尝试的时候
[oracle@DB ~]$ expdp scott/scott tables=emp1 dumpfile=emp1.dmp logfile=emp1.log query=emp1:"where rownum < 5" Export: Release 11.2.0.4.0 - Production on 星期日 6月 18 01:06:05 2017 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsORA-39001: 参数值无效ORA-39035: 已经指定了数据过滤器 SUBQUERY。
ORA-39001: 参数值无效ORA-39035: 已经指定了数据过滤器 SUBQUERY。
上述错误说明query语法写的有问题
正确写法要用\转义引号
于是再次编写了一下,执行,OK!
[oracle@DB ~]$ expdp scott/scott tables=emp1 dumpfile=emp1.dmp logfile=emp1.log query=\"where rownum \< 5\" Export: Release 11.2.0.4.0 - Production on 星期日 6月 18 01:18:52 2017 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options启动 "SCOTT"."SYS_EXPORT_TABLE_01": scott/******** tables=emp1 dumpfile=emp1.dmp logfile=emp1.log query="where rownum < 5" 正在使用 BLOCKS 方法进行估计...处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA使用 BLOCKS 方法的总估计: 64 KB处理对象类型 TABLE_EXPORT/TABLE/TABLE. . 导出了 "SCOTT"."EMP1" 8.179 KB 4 行已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_TABLE_01" ******************************************************************************SCOTT.SYS_EXPORT_TABLE_01 的转储文件集为: /u01/app/oracle/admin/orcl/dpdump/emp1.dmp作业 "SCOTT"."SYS_EXPORT_TABLE_01" 已于 星期日 6月 18 01:19:03 2017 elapsed 0 00:00:10 成功完成
通过上面截图可以看到:1中双引号和小于号前面都要加上反斜线\转义,在实际oracle中会把这些反斜线去掉来执行,注意观察2处。
当然结果是OK的,把原表备份一下然后删除,导入验证一下,如下:
2.答主突发奇想又测试了一种情况,就是当query条件中有大于号的情况。如下:
[oracle@DB ~]$ expdp scott/scott tables=emp1 dumpfile=emp1_2.dmp logfile=emp1.log query=\"where hiredate > to_date\(\'1982/01/02\',\'yyyy/mm/dd\'\)\"-bash: to_date('1982/01/02','yyyy/mm/dd')": No such file or directory
看到结果没,如果条件中有大于号而又没有加反斜线,系统把这种大于号默认是重定义符号。如下所示这种:
更改一下,再次执行,就OK了。童鞋们请重点观察下图中标注的1、2处。
[oracle@DB ~]$ expdp scott/scott tables=emp1 dumpfile=emp1_2.dmp logfile=emp1.log query=\"where hiredate \> to_date\(\'1982/01/02\',\'yyyy/mm/dd\'\)\" Export: Release 11.2.0.4.0 - Production on 星期日 6月 18 01:59:56 2017 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options启动 "SCOTT"."SYS_EXPORT_TABLE_01": scott/******** tables=emp1 dumpfile=emp1_2.dmp logfile=emp1.log query="where hiredate > to_date('1982/01/02','yyyy/mm/dd')" 正在使用 BLOCKS 方法进行估计...处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA使用 BLOCKS 方法的总估计: 64 KB处理对象类型 TABLE_EXPORT/TABLE/TABLE. . 导出了 "SCOTT"."EMP1" 8.125 KB 3 行已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_TABLE_01" ******************************************************************************SCOTT.SYS_EXPORT_TABLE_01 的转储文件集为: /u01/app/oracle/admin/orcl/dpdump/emp1_2.dmp作业 "SCOTT"."SYS_EXPORT_TABLE_01" 已于 星期日 6月 18 02:00:01 2017 elapsed 0 00:00:04 成功完成
3.如果有童鞋想一下子导出多张表时,需如下定义:
expdp scott/scott tables=emp1,emp2 dumpfile=emp.dmp logfile=emp1.log query=emp1:\"where rownum<5\",emp2:\"where rownum<5\"
方法
星期
成功
对象
类型
处理
参数
数据
斜线
再次
引号
情况
文件
条件
正在
童鞋
结果
转义
过滤器
作业
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
诚壹网络技术有限公司
东莞游戏软件开发公司
Java版我的世界离线登录怎么去服务器玩
软件开发中项目进度汇报模板
小红伞 服务器
江苏特殊软件开发价格表格
网络安全展板图
嘉兴软件开发驻场业务
软件开发人员资源池
数据库中的数据更新实验
服务器怎么多开传奇引擎
服务器怎么u盘启动
关闭数据库链接的顺序
未安装数据库与服务器
苏州木鱼网络技术
IP网络技术定义
少女前线b服服务器已满
现代网络技术英语作文150字
互联网科技公司范文
昆山软件开发开发商
余姚浪潮整机柜服务器
松江区信息软件开发技术指导
数据库fetch最大件数
北京定制软件开发风格
网络安全机构
泰安商城软件开发产品
服务器格式化磁盘怎么操作
北京互动百科网络技术股
jfinal插入到数据库
大批量的数据库优化