Oracle导出SQL语句结果集为dmp文件


前言

在运维工作中遇到一个应用方提出的需求,需要将SQL语句查询出来的结果集导出为dmp文件。


提示:以下是本篇文章正文内容,下面案例可供参考

一、views_as_tables

Oracle呢,从12C版本以后可通过views_as_tables的参数来实现我们的expdp导出视图的结果集,方法呢也很简单,也有一定的格式要求如下:
1、导出多个视图格式:views_as_tables=v_cxl,v_wnn
(注意:不加括号)否则会出现:-bash: syntax error near unexpected token `(’ 提示
2、视图中不可以包括0长度的列,像null和’'等列

ORA-39126: Worker unexpected fatal error in KUPW$WORKER.CONFIGURE_METADATA_UNLOAD [] 
ORA-01723: zero-length columns are not allowed

3、视图查询中不支持lob和lang字段类型的导出
4、views_as_tables参数与schemas参数不能同时使用

二、测试日志

[oracle@cxl1dmp]$
[oracle@cxl1 dmp]$ expdp cxl/cxl123456@192.168.221.138:1521/cxldb views_as_tables=view_mc_mzzd,view_mc_mzmx,view_lsjd_mzzd,view_lsjd_mzmx directory=DMP dumpfile=view_mz1020.dmp logfile=view_mz1020.log cluster=N

Export: Release 12.2.0.1.0 - Production on Wed Oct 20 20:33:02 2021

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Starting "CXL"."SYS_EXPORT_TABLE_03":  cxl/********@192.168.221.138:1521/cxldb views_as_tables=view_mc_mzzd,view_mc_mzmx,view_lsjd_mzzd,view_lsjd_mzmx directory=DMP dumpfile=view_mz1020.dmp logfile=view_mz1020.log cluster=N 
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE
. . exported "CXL"."VIEW_LSJD_MZMX"                      939.2 MB 3796658 rows
. . exported "CXL"."VIEW_LSJD_MZZD"                      114.9 MB  453903 rows
. . exported "CXL"."VIEW_MC_MZMX"                        230.0 MB  920005 rows
. . exported "CXL"."VIEW_MC_MZZD"                        38.28 MB  144835 rows
Master table "CXL"."SYS_EXPORT_TABLE_03" successfully loaded/unloaded
******************************************************************************
Dump file set for CXL.SYS_EXPORT_TABLE_03 is:
  /backup/dmp/view_mz1020.dmp
Job "CXL"."SYS_EXPORT_TABLE_03" successfully completed at Wed Oct 20 20:36:51 2021 elapsed 0 00:03:48

[oracle@cxl1 dmp]$ expdp cxl/cxl123456@192.168.221.138:1521/cxldb views_as_tables=view_mc_zyzd,view_mc_zymx,view_lsjd_zyzd,view_lsjd_zymx directory=DMP dumpfile=view_zy1020.dmp logfile=view_zy1021.log cluster=N

Export: Release 12.2.0.1.0 - Production on Wed Oct 20 20:37:08 2021

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Starting "CXL"."SYS_EXPORT_TABLE_03":  cxl/********@192.168.221.138:1521/cxldb views_as_tables=view_mc_zyzd,view_mc_zymx,view_lsjd_zyzd,view_lsjd_zymx directory=DMP dumpfile=view_zy1020.dmp logfile=view_zy1021.log cluster=N 
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE
. . exported "CXL"."VIEW_LSJD_ZYMX"                          0 KB       0 rows
. . exported "CXL"."VIEW_LSJD_ZYZD"                          0 KB       0 rows
. . exported "CXL"."VIEW_MC_ZYMX"                            0 KB       0 rows
. . exported "CXL"."VIEW_MC_ZYZD"                            0 KB       0 rows
Master table "CXL"."SYS_EXPORT_TABLE_03" successfully loaded/unloaded
******************************************************************************
Dump file set for CXL.SYS_EXPORT_TABLE_03 is:
  /backup/dmp/view_zy1020.dmp
Job "CXL"."SYS_EXPORT_TABLE_03" successfully completed at Wed Oct 20 20:37:23 2021 elapsed 0 00:00:14

[oracle@cxl1 dmp]$ 
[oracle@cxl1  dmp]$ ls -lt|head
total 272954268
-rw-r--r-- 1 oracle asmadmin        1234 Oct 20 20:37 view_zy1021.log
-rw-r----- 1 oracle asmadmin      548864 Oct 20 20:37 view_zy1020.dmp
-rw-r--r-- 1 oracle asmadmin        1234 Oct 20 20:36 view_mz1020.log
-rw-r----- 1 oracle asmadmin  1387311104 Oct 20 20:36 view_mz1020.dmp
[oracle@cxl1 dmp]$ 
Oracle数据库DMP文件Oracle导出工具(expdp或exp工具)生文件格式,它包含了数据库对象和数据的完整备份或导出。将DMP文件转换为CSV文件通常意味着你想要从Oracle数据库中提取特定表的数据,并将其保存为逗号分隔值的文本格式,以便于在其他应用程序中使用。 要完这个任务,一般有以下几种方法: 1. 使用Oracle的数据导入/导出工具导出为csv文件: - 首先,你可以使用Oracle的导入工具(imp或impdp)将DMP文件导入到数据库中。 - 然后,使用SQL*Plus或其他数据库管理工具(如Toad、SQL Developer等)连接到数据库。 - 执行SELECT...INTO OUTFILE语句,将查询结果导出为CSV格式文件。 示例SQL语句: ```sql SELECT * FROM your_table INTO OUTFILE '/path/to/output.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' (column1, column2, ...); ``` 2. 使用第三方工具或脚本语言: - 可以使用如Python、Perl等编程语言编写脚本,通过解析DMP文件来提取数据,并将其格式化为CSV文件。 - 使用Python的cx_Oracle库可以连接到Oracle数据库,并通过数据库操作将数据导出为CSV格式。 3. 使用命令行工具expdp或exp: - 通过命令行工具expdp或exp,你可以指定导出数据为逗号分隔值格式(如果工具支持这种导出格式)。 需要注意的是,直接DMP文件转换为CSV文件并不是一个简单直接的过程,因为DMP文件本身不是文本格式,而是Oracle的一种特定的二进制格式。通常,你需要先将DMP文件导入到Oracle数据库中,然后执行导出操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA狗剩儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值