将dump文件导入oracle之后导出为CSV文件和SQL文件(转载)

本文详细介绍如何将Oracle数据库中的dump文件导入后,导出为CSV和SQL文件的过程。包括使用PL/SQL进行操作的具体步骤,以及在Windows10环境下安装Oracle19c数据库的指导。

将dump文件导入oracle之后导出为CSV文件和SQL文件
文章目录
将dump文件导入oracle之后导出为CSV文件和SQL文件
前言
大佬给的解决方法。
导出CSV文件
导出SQL文件
前情回顾
思路
dbf文件
总结
前言
Windows10安装oracle 19c数据库+PLsql详细安装过程

导入.dump文件到Oracle 19c的操作步骤

现在要把导入的.dump文件导出为CSV文件和SQL文件。

大佬给的解决方法。
使用plsql。

导出CSV文件
步骤一,登入plsql(注意选normal)

在这里插入图片描述

步骤二,在plsql左侧列表中,选择table。(注意过滤栏不要搜索)

在这里插入图片描述

步骤三,在tables文件夹中找到导入的数据。右键选择查询数据。

在这里插入图片描述

步骤四,全选,右键“导出结果-CSV文件”。然后输入文件名。点确定即可。(不用全选也可以)

在这里插入图片描述

在这里插入图片描述

结束。6G的文件导出了19k,应该是导出前26行的原因。

导出SQL文件
步骤一,按前两个步骤找到tables文件夹中导入的数据,右键选择“导出数据”。

在这里插入图片描述

步骤二,选择SQL插入,选择输出文件和文件地址(我这个是写好之后的),点击导出即可

在这里插入图片描述

结束。由于文件有6G,所以导出的速度有些慢,大约需要半个多小时。导出的文件有16.3G。

前情回顾
在导入.dump的过程中,是通过两步进行的,首先在数据库文件夹下设置表空间。

CREATE BIGFILE tablespace ODSVIEW
logging
datafile ‘D:\Oracle\oradata\ORCL\POWER.DBF’
size 8000m
autoextend on
next 50m maxsize UNLIMITED
extent management local;
1
2
3
4
5
6
7
然后通过cmd输入impdb

impdp system/qweasd123 DIRECTORY=dpdata1 DUMPFILE=MP_READ_CURVE_JG1_10.dump REMAP_SCHEMA=SC_DPSH:system
1
不过我比较好奇,MP_READ_CURVE_JG1_10.dump文件我都没写路径,它怎么找到这个文件的。

(8-14补充)

这里的DIRECTORY=dpdata1 是目录路径。是我在尝试导入.dump文件到Oracle 19c的操作步骤参考文章二的时候,用下面这行代码设置的。

SQL> create or replace directory dpdata1 as ‘C:\MP_READ_CURVE_JG1_10’;

目录已创建。
1
2
3
最后成功导入文件。

;;;
Import: Release 19.0.0.0.0 - Production on 星期三 8月 12 16:20:07 2020
Version 19.3.0.0.0

Copyright © 1982, 2019, Oracle and/or its affiliates. All rights reserved.
;;;
连接到: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
已成功加载/卸载了主表 “SYSTEM”.“SYS_IMPORT_FULL_01”
已在 AL32UTF8 字符集和 AL16UTF16 NCHAR 字符集中完成导入
已在 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中完成导出
警告: 字符集转换过程中可能出现数据丢失情况
启动 “SYSTEM”.“SYS_IMPORT_FULL_01”: system/******** DIRECTORY=dpdata1 DUMPFILE=MP_READ_CURVE_JG1_10.dump REMAP_SCHEMA=SC_DPSH:system
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_3” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_6” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_5” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_7” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_1” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_9” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_10” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_4” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_2” 6.119 GB 10497713 行
. . 导入了 “SYSTEM”.“MP_READ_CURVE_JG2_8” 6.119 GB 10497713 行
作业 “SYSTEM”.“SYS_IMPORT_FULL_01” 已于 星期三 8月 12 17:02:26 2020 elapsed 0 00:42:16 成功完成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
在我的数据库文件夹下,果然有一个POWER.DBF文件,有79G。

不过我用plsql去找这个的时候没找到,也不能导入。不清楚如何操作这个power.dbf文件

思路
首先明白dbf文件是什么?用什么软件打开?

dbf文件
参考文章:百度百科——dbf

Digital Beam Forming的缩写,译为数字波束形成或数字波束合成。广泛应用于阵列信号处理领域。又可以表示一种数据库文件。

foxbase、dbase等数据库处理系统所产生的数据库文件。

可以用Excel打开dbf文件。

总结
有大腿,直接问就好。

更多内容请关注:优快云、掘金、GitHub、gitee

原文链接:https://blog.youkuaiyun.com/weixin_42875245/article/details/107982099?utm_medium=distribute.pc_feed.none-task-blog-personrec_tag-6.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-personrec_tag-6.nonecase&request_id=5f4394af0388ae0b5643c52b

<think>好的,用户的问题是如何将Oracle的DMP文件转换为SQL脚本。我需要先理清楚DMP文件是什么,以及转换的可能方法。根据提供的引用资料,Oracle导出DMP文件通常是通过EXP工具或者数据泵(EXPDP)进行的,但这些工具生成的DMP文件是二进制格式的,不能直接转换为SQL脚本。 首先,查看引用[1]提到使用Oracle Export导出DMP文件,而引用[3]提到sqluldr2工具可以导出文本文件,但用户的需求是转成SQL脚本。可能的方法之一是通过Oracle的IMP工具配合SQLFILE参数来生成SQL文件,虽然IMP主要用于导入,但可以生成创建语句。另外,引用[3][4]提到使用sqluldr2或shell脚本导出数据,但这些可能生成的是数据文件而非SQL插入语句。 接下来,用户可能需要将DMP中的对象定义数据转换为INSERT语句。IMP的SQLFILE参数可以提取DDL,但数据部分可能需要其他方法。数据泵(EXPDP/IMPDP)的SQLFILE选项同样可以生成DDL,但数据仍然以二进制形式存在。对于数据导出为INSERT语句,可能需要第三方工具或者自己编写脚本,比如使用PL/SQL循环生成INSERT语句,但这对于大数据量不现实。 另外,引用[2]提到MySQLPostgreSQL使用官方工具导出,而Oracle没有类似直接导出SQL的方法。因此,可能需要结合使用IMPDP的SQLFILE生成DDL,再通过其他方式导出数据为INSERT语句,或者寻找第三方工具如Oracle SQL Developer的导出功能,这可能生成所需的SQL。 总结可能的步骤:1. 使用IMP的SHOW=YSQLFILE生成DDL;2. 使用数据泵的SQLFILE参数;3. 使用第三方工具或自定义脚本导出数据为INSERT。需要提醒用户注意数据量大的问题,以及可能的数据类型不兼容情况。同时,确保用户有安装必要的工具,如Oracle客户端或数据泵工具。</think>将Oracle的DMP文件转换为SQL脚本需要结合Oracle原生工具第三方工具实现。以下是具体方法步骤: ### 一、提取对象定义(DDL) 1. **使用`IMP`工具生成对象定义** 执行以下命令可将DMP文件中的表结构生成SQL文件: ```bash imp user/password@sid file=export.dmp indexfile=objects.sql full=y show=y ``` 生成的`objects.sql`包含建表语句、索引等DDL,但需要手动删除`REM`注释调整语法[^3][^4]。 2. **数据泵的`SQLFILE`参数** 使用`IMPDP`命令导出元数据: ```bash impdp user/password directory=DATA_PUMP_DIR dumpfile=export.dmp sqlfile=metadata.sql ``` 此方法生成更规范的DDL语句,包含表、约束、触发器等。 ### 二、导出数据为INSERT语句 1. **使用第三方工具sqluldr2** 该工具支持通过SQL查询导出数据为CSV或自定义格式: ```bash sqluldr2 user/password query="SELECT * FROM table" head=yes file=data.csv ``` 再通过脚本将CSV转换为`INSERT INTO table VALUES (...)`格式。 2. **PL/SQL动态生成INSERT** 通过游标遍历表数据并拼接SQL: ```sql BEGIN FOR r IN (SELECT * FROM table) LOOP dbms_output.put_line('INSERT INTO table VALUES ('||r.id||','''||r.name||''');'); END LOOP; END; ``` **注意:此方法仅适用于小数据量表**。 ### 三、整合步骤 1. 先用`IMPDP`生成`metadata.sql`定义文件 2. 用`sqluldr2`导出所有表数据为CSV 3. 编写Python脚本将CSV批量转换为INSERT语句存入`data.sql` 4. 合并`metadata.sql``data.sql`得到完整SQL文件 ### 四、注意事项 1. **数据类型兼容性** BLOB、CLOB等二进制类型无法直接转换为SQL文本,需特殊处理 2. **性能限制** 单条INSERT语句导入百万级数据时性能极差,建议分批次提交(每1000条加`COMMIT;`) 3. **工具依赖** sqluldr2需Oracle Instant Client支持,且需配置LD_LIBRARY_PATH环境变量[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值