数据库导入导出详解

2023-11-16

1、数据库导入导出:

1、传统方式:exp(导出)和 imp(导入)

2、数据泵方式:expdp(导出)和 impdp(导入)

3、第三方工具:PL/sql Developer

2、三种导入导出方式优缺点比较
2.1、exp&imp

优点:代码书写简单易,从本地即可直接导入,不用在服务器中操作,降低难度,减少服务器上的操作也就保证了服务器上数据文件的安全性。

缺点:这种导入导出的速度相对较慢,合适数据库数据较少的时候。如果文件超过几个G,大众性能的电脑,至少需要4~5个小时左右。

2.2、expdp&impdp

优点:导入导出速度相对较快,几个G的数据文件一般在1~2小时左右。

缺点:代码相对不易理解,要想实现导入导出的操作,必须在服务器上创建逻辑目录(不是真正的目录)。我们都知道数据库服务器的重要性,所以在上面的操作必须慎重。所以这种方式一般由专业的程序人员来完成。

2.3、PL/sql Develpoer

优点:封装了导入导出命令,无需每次都手动输入命令。方便快捷,提高效率。

缺点:长时间应用会对其产生依赖,降低对代码执行原理的理解。

3、注意

目标数据库:数据即将导入的数据库。

源数据库:数据导出的数据库。

1、目标数据库要与源数据库有着名称相同的表空间。

2、目标数据在进行导入时,用户名尽量相同(这样保证用户的权限级别相同)。

3、目标数据库每次在进行数据导入前,应做好数据备份,以防数据丢失。4、使用数据泵时,一定要现在服务器端建立可用的逻辑目录,并检查是否可用。

5、弄清是导入导出到相同版本还是不同版本(oracle10g版本与oracle11g版本)。

6、目标数据导入前,弄清楚是数据覆盖(替换),还是仅插入新数据或替换部分数据表。

7、确定目标数据库磁盘空间是否足够容纳新数据,是否需要扩充表空间。

8、导入导出时注意字符集是否相同,一般Oracle数据库的字符集只有一个,并且固定,一般不改变。

9、导出格式介绍:

Dmp格式:.dmp是二进制文件,可跨平台,还能包含权限,效率好;

Sql格式:.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字(blob,clob,long),如果有,会报错;

Pde格式:.pde格式的文件,.pde为PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具导入导出,不能用文本编辑器查看;

10、确定操作者的账号权限。

4、三者的导入导出方法
4.1、传统方法

1、导入导出语法

exp(imp)  username/password@servicename:1521 file="e:\temp.dmp" full = y
exp(imp)  username/password@ip:端口/orcl file="e:\temp.dmp" full = y

2、数据库导出举例

exp stg/stg@127.0.0.1:1521/orcl file="e:\stg.dmp" full = y;

3、参数说明

exp:导出命令,导出时必写。
imp:导入命令,导入时必写。
username:导出数据的用户名,必写。
password:导出数据的密码,必写。
@:地址符号,必写。
servicename:oracle的服务名,必写。
1521:端口号,1521是默认的可以不写,非默认要写。
file="e:\stg.dmp":文件存放路径地址,必写。
full=y 表示全库导出。可以不写,则默认为no,则只导出用户下的对象。

4、方法细分

1、完全导入导出:

exp(imp)  username/password@servicename:1521 file="e:\temp.dmp" full = y;

2、部分用户表table导入导出:

exp(imp)  username/password@servicename:1521 file="e:\temp.dmp" tabels= (table1,table2,table3,...);

3、表空间tablespaces导入导出:

exp(imp)  username/password@servicename:1521 file="e:\temp.dmp" tablespaces=(tablespace1,tablespace2,tablespace3,...);

一个数据库实例可以有N个表空间(tablespace),一个表空间下可以有N张表(table)。

4、用户名username对象导入导出:

exp(imp)  username/password@servicename:1521 file="e:\temp.dmp" owner(username1,username2,username3);

5、按用户导出:

exp username/password@servicename:1521 file=C:\person.dmp owner=用户名

6、按用户导入:

imp username/password@servicename:1521 file=C:\stg.dmp fromuser=[old_username] touser=[username]
4.2、数据泵方法

创建directory

expdp(impdp) username/password@servicename:1521 schemas=username dumpfile=file1.dmp logfile=file1.log directory=testdata1 remap_schema=test:test;

数据库导出举例

expdp xinxiaoyong/123456@127.0.0.1:1521 schemas=xinxiaoyong dumpfile=test.dmp logfile=test.log directory=testdata1;

参数说明

exp:导出命令,导出时必写。
imp:导入命令,导入时必写,每次操作,二者只能选择一个执行。
username:导出数据的用户名,必写;
password:导出数据的密码,必写;
@:地址符号,必写;
SERVICENAME:Oracle的服务名,必写;
1521:端口号,1521是默认的可以不写,非默认要写;
schemas:导出操作的用户名;
dumpfile:导出的文件;
logfile:导出的日志文件,可以不写;
directory:创建的文件夹名称;
remap_schema=源数据库用户名:目标数据库用户名:二者不同时必写,相同可以省略;

查看表空间

select * from dba_tablespaces;

查看管理员目录

同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错

select * from dba_directories;

创建逻辑目录

该命令不会在操作系统创建真正的目录,最好以system等管理员创建。

create directory testdata1 as 'd:\test\dump';

授权

给 stg 用户赋予在指定目录的操作权限,最好以system等管理员赋予。

grant read,write on directory testdata1 to stg;

导出数据

1、按用户导

expdp xinxiaoyong/123456@orcl schemas=xinxiaoyong dumpfile=expdp.dmp directory=testdata1;

2、并行进程parallel

expdp xinxiaoyong/123456@orcl directory=testdata1 dumpfile=xinxiaoyong3.dmp parallel=40 job_name=xinxiaoyong3

3、按表名导

expdp xinxiaoyong/123456@orcl tables=emp,dept dumpfile=expdp.dmp directory=testdata1;

4、按查询条件导

expdp xinxiaoyong/123456@orcl directory=testdata1 dumpfile=expdp.dmp tables=emp query='WHERE deptno=20';

5、按表空间导

expdp system/manager directory=testdata1 dumpfile=tablespace.dmp tablespaces=temp,example;

6、导整个数据库

expdp system/manager directory=testdata1 dumpfile=full.dmp FULL=y;

导入数据

1、导到指定用户下

impdp stg/stg directory=testdata1 dumpfile=stg.dmp schemas=stg;

2、改变表的 owner

impdp dw/dw directory=testdata1 dumpfile=dw.dmp tables=xinxiaoyong.dept remap_schema =stg:dw;

3、导入表空间

impdp system/manager directory=testdata1 dumpfile=tablespace.dmp tablespaces=example;

4、导入数据库

impdb system/manager directory=dump_dir dumpfile=full.dmp FULL=y;

5、追加数据

impdp system/manager directory=testdata1 dumpfile=expdp.dmp schemas=system  table_exists_action;
4.3、PLSQL方法

登录plsql工具,所使用用户为源数据库有导出权限(exp_full_database,dba等)的用户。

导出建表语句(包括存储结构)

导出步骤:工具,导出表,选好表以后,下方有Oracle导出是对应的dmp文件,SQL插入是对应的SQL文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库导入导出详解 的相关文章

  • 如何将大型 XML 字符串插入 Oracle 表中?

    我想将一个大的 XML 字符串插入到我的表中 我的表是 test id xml column XMLType 当我插入值时 它返回 字符串文字太长 错误 我上网查了一下 大家都说把数据类型改成CLOB 但我想存储相同的数据类型 XMLTyp
  • Oracle 中的 TO_Char 数字格式模型

    我不完全理解如何使用 to char 函数将数字转换为具有适当格式模型的字符串 实际数字具有以下格式 使用逗号作为小数点分隔符 始终为 5 个小数 整数最多可达 6 可能是无限的 但目前绝不会超过 6 数字可以是正数或负数 数字可以以 0
  • sql 查询查找匹配属性

    我目前正在做一个类似易货系统的系统 情况是这样的 客户 Jasmine 要求输入 NAME 属性 她需要寻找的内容 并输入 SEEK 属性 她需要寻找的内容 为了获得结果 SEEK 属性必须与其他客户的 Name 属性匹配 其他客户的 SE
  • 在 JDBC PL/SQL 块中多次使用命名参数时出错

    当使用命名参数调用 PL SQL 块时出现错误 当所有命名参数仅使用一次时 我的代码工作正常 但是当我复制标有 SQL 的 SQL 时 然后所有命名参数 以冒号开头 q 都使用了两次 现在我得到一个 SQL 异常 它说 参数名称的数量与注册
  • 如何使用 Hibernate 3.3.2GA 将 TIMESTAMP WITH TIME ZONE 映射到 Java 数据类型?

    如何映射 Oracle 列类型TIMESTAMP WITH TIME ZONE http download oracle com docs cd B19306 01 server 102 b14225 ch4datetime htm i10
  • 在 Oracle BI Publisher 中将数字转换为单词

    我有一个要求 我需要将发票总金额显示为 rtf 中的文字 我尝试过 but it doesn t show any thing Is there any RTF Tag to do such a requirement on layout
  • 将行连接成 CLOB

    关于这个主题有很多类似的问题 但我找不到任何解决方案来考虑最终结果对于 varchar2 来说太大的任何问题 所以我想做的就是改变这一点 Column1 Column2 1 Hello 1 world 1 please help 2 Tha
  • 为什么Mysql的Group By和Oracle的Group by行为不同

    为什么Mysql的Group By和Oracle的Group by行为不同 我多次发现 Mysql group By 功能和 Oracle 的 GroupBy 功能表现不同 很多时候我在Oracle中发现错误 这实际上是错误的查询 但是My
  • Oracle SQL - 将 oracle sql 中的 id 更新为按顺序排列

    我在 Oracle SQL 中有一个表 其 id 按递增顺序排列 但由于编辑原因 id 中存在间隙 例如id 目前类似于 22 23 24 32 33 44 etc 我想通过浏览表中的每一行并更新它们来修复这些差距 这样就不会有差距 最好的
  • 如何获取Oracle中命名事务的名称?

    我想在触发器中使用事务的名称 以便将其写入列中 我尝试了这个 在 SQL Developer 中 set transaction name hello select DBMS TRANSACTION LOCAL TRANSACTION ID
  • SQL选择符号||是什么意思意思是?

    什么是 在 SQL 中做什么 SELECT a b AS letter 表示字符串连接 不幸的是 字符串连接不能在所有 sql 方言之间完全移植 ANSI SQL 中缀运算符 mysql concat 可变参数函数 caution 表示 逻
  • SQL:两个没有完整列匹配的表的并集

    我有一个table A其中有一组列A1 A2和一个具有一组列的 table bB1 B2 碰巧的是A2 B1但其余列不匹配 也不应该匹配 我想附加表格 所以我使用UNION ALL 对于不匹配的列 我使用null as COLUMN NAM
  • oracle日期序列?

    我有一个 oracle 数据库 我需要一个包含 2 年所有日期的表 例如来自01 01 2011 to 01 01 2013 首先我想到了一个序列 但显然唯一支持的类型是数字 所以现在我正在寻找一种有效的方法来做到这一点 欢呼骗局 如果您想
  • 如何从 Oracle 中的 select 语句调用带有 Rowtype 参数的函数

    我有一个 oracle 函数 它有一个 in 参数 它是表的行类型 我需要从 select 语句将当前行传递给这个函数 以便它进行一些处理并返回一个值 是否有一个伪变量可以在 select 语句的上下文中使用 相当于触发器中的旧的和新的 我
  • 从 Oracle Varchar2 中查找并删除非 ASCII 字符

    我们目前正在将一个 Oracle 数据库迁移到 UTF8 并且发现一些记录接近 4000 字节 varchar 限制 当我们尝试迁移这些记录时 它们会失败 因为它们包含的字符变成了多字节 UF8 字符 我想要在 PL SQL 中做的是找到这
  • 在 C# 中多次使用单个参数的更好方法

    我刚开始使用准备好的语句从数据库查询数据 并且在实现 C 参数 特别是 OracleParameters 时遇到问题 假设我有以下 SQL string sql select from table1 t1 table2 t2 where t
  • 如何使用 Hibernate Session.doWork(...) 进行保存点/嵌套事务?

    我正在使用 JavaEE JPA 托管事务与 Oracle DB 和 Hibernate 并且需要实现某种嵌套事务 据我所知 此类事情不受开箱即用的支持 但我应该能够为此目的使用保存点 正如建议的https stackoverflow co
  • 如何在可能为空值的字段上创建唯一索引(Oracle 11g)?

    这是包含 3 列的示例表 ID UNIQUE VALUE UNIQUE GROUP ID 我希望可以允许以下记录 1 NULL NULL 2 NULL NULL or 3 NULL 7 4 123 7 or 注意 此条件不允许unique
  • 使用 SYS_CONNECT_BY_PATH 的 Oracle 累积计数

    当我尝试对实际数据执行以下查询时 它返回了更多记录数 请帮助解决这个问题 下面是表 DM TEMP SUMMING DVC BY FW 中的实际数据 device count dmc id firmware version cg id im
  • 在sql plus脚本中运行循环

    我正在 sql plus 中运行脚本 我的脚本中有一个 for 循环 BEGIN FOR count IN 1 100 LOOP INSERT INTO CompanyShare VALUES count 1 250 END LOOP EN

随机推荐

  • opencv-python中 boundingRect(cnt)以及cv2.rectangle用法

    转自 http blog csdn net zhangxb35 article details 47275277 矩形边框 Bounding Rectangle 是说 用一个最小的矩形 把找到的形状包起来 还有一个带旋转的矩形 面积会更小
  • 实用常识

    WolframAlpha是开发计算数学应用软件的沃尔夫勒姆 Wolfram 研究公司基于科学计算软件Mathematica开发出的新一代的搜索引擎 试图挑战Google搜索引擎的地位 能根据问题直接给出标准化答案的网站 比如输入一种材料名称
  • iOS开发 多线程的高级应用-信号量semaphore

    在iOS开发的道路上 多线程的重要性不言而喻 大部分我们都停留在基础的使用上面 缺乏高级应用 缺乏提升 是因为我们面对他太少 复杂的事情重复做 复杂的事务基础化 差距就是这样拉开了 言归正传 今天讲讲GCD的高级应用之信号量篇 一 信号量的
  • CMake使用小结

    CMake使用小结 指定本地库的位置 set Qt5 DIR path list APPEND CMAKE PREFIX PATH Qt5 DIR 设置编译输出的路径 set CMAKE ARCHIVE OUTPUT DIRECTORY D
  • 一阶低通滤波

    一阶低通滤波 前言 在使用单片机开发中 常常会用到的外设包括ADC采样 而采样必然会伴随这随机干扰引起的毛刺噪声 对于需要捕捉采样值突变的系统来说尤其需要减小毛刺突变的影响 从硬件电路和软件算法上都能一定程度的减少噪声达到滤波的目的 本文主
  • VSCode配置文件“.vscode/c_cpp_properties.json”不断被覆盖的原因及解决方法

    一 问题现象 昨天 我在用VSCode写一个小算法程序 使用CMake配置文件 CMakeLists txt 进行工程管理 算法测试倒还顺利 但VSCode出现了一个令人恼火的问题 每次重新打开VSCode后 配置文件 vscode c c
  • android 反编译

    使用工具 CSDN上下载地址 apktool 资源文件获取 下载 dex2jar 源码文件获取 下载 jd gui 源码查看 下载 Android反编译整合工具包 最新 下载 官方最新版本下载地址 apktool google code d
  • finetune

    finetune的含义是获取预训练好的网络的部分结构和权重 与自己新增的网络部分一起训练 下面介绍几种finetune的方法 完整代码 https github com toyow learn tensorflow tree master
  • 【Web前端】一文带你吃透HTML(完整篇)

    前端学习路线小总结 基础入门 HTML CSS JavaScript 三大主流框架 VUE REACT Angular 深入学习 小程序 Node jQuery TypeScript 前端工程化 开始前端之旅吧 一 HTML简介 1 什么是
  • 【软件工程】白盒测试:基本路径测试

    基本路径测试是在程序控制流图的基础上 通过分析控制构造的环路复杂性 导出基本可执行的路径集合 从而设计测试用例的方法 步骤 以一段代码为例 1 画出控制流图 void sort int num int t 1 2 int x 0 3 int
  • Adobe Bridge 2024:解锁创意力的数字媒体利器

    在当今数字化的时代 创意工作者们需要处理和管理大量的数字媒体资源 如照片 视频 音频等 为了提高工作效率和创作质量 他们需要一个功能强大 易于使用的工具来组织 浏览和共享这些媒体文件 幸运的是 Adobe Bridge 2024 正好满足了
  • 十大MES系统排行 制造执行系统 生产管理系统榜中榜

    MES系统十大品牌数据由CN10排排榜技术研究部门和CNPP品牌数据研究部门通过资料收集整理 并基于大数据统计及人为根据市场和参数条件变化的分析研究专业测评而得出 是大数据 云计算 数据统计真实客观呈现的结果 更多行业榜单尽在买购网 1 S
  • CentOS7.9设置ntp时间同步

    文章目录 应用场景 基础知识 服务端操作步骤 客户端操作步骤 应用场景 我们公司是做智慧交通的 主要卖交通相关的硬件和软件 硬件包括信号机 雷达 雷视 边缘盒子等 软件包括信控平台 管控平台等 路口前端设备 信号机设备 雷达设备 边缘计算单
  • Flutter安装最详细的教程(Android studio)

    本文假设你已经知道Android开发是什么 且已安装git Android sdk jdk等必要的环境 1 安装flutter插件 2 安装dart 3下载flutter sdk 去flutter官网下载其最新可用的安装包 点击下载 注意
  • 内存数据库SQLite和H2比较

    内存数据库 顾名思义就是将数据放在内存中直接操作的数据库 相对于磁盘 内存的数据读写速度要高出几个数量级 将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能 AD 2013云计算架构师峰会课程资料下载 本文中主要为大家介绍两种内存数
  • STM32学习——端口复用及映射

    1 复用 STM32有很多的内置外设 这些外设的外部引脚都是与GPIO复用的 也就是说 一个GPIO如果可以复用为内置外设的功能引脚 那么当这个GPIO作为内置外设使用的时候 就叫做复用 哪些端口可以复用为什么 这个查表就可以了 2 如何进
  • volatile 关键字 详解,为何不能保证复合操作的原子性

    一直对volatile 有些许的疑惑 就是它既然实时刷新主内存中的值 并且能保证可见 为啥不能保证原子性n 下面分析 使用volatile 关键字修饰共享变量时 变量就会有以下特点 1 变量对其他线程具有可见性 2 禁止进行指令重排 保证了
  • MATLAB如何画三轴图

    MATLAB如何画三轴图 前言 使用MATLAB绘图非常方便 它提供了非常丰富的图形 如 line bar stem等 用户可以直接调用相应的函数 但有时直接使用这些 高级 的函数不能满足我们的绘图要求 比如 如何绘制三Y轴的图形 即一个f
  • docker push 镜像上传至仓库

    目的 docker push chengzy busybox v2 问题 denied requested access to the resource is denied 原因 登录的账户名不匹配 解决 使用 tag 更改镜像名字前缀为
  • 数据库导入导出详解

    1 数据库导入导出 1 传统方式 exp 导出 和 imp 导入 2 数据泵方式 expdp 导出 和 impdp 导入 3 第三方工具 PL sql Developer 2 三种导入导出方式优缺点比较 2 1 exp imp 优点 代码书