• 背景
  • 方法一、采用oracle最原始dump文件的导出再导入的形式
  • 1、数据导出
  • 1.1、创建导出参数文件
  • 1.2 执行导出
  • 2、数据导入
  • 2.1 创建导入参数文件
  • 2.2 执行导入
  • 方法二、通过创建DBLINK方式
  • 总结

背景

需要把测试环境82库的一个有30条数据导入开发环境200库中,plsql图形界面有文本导入,最开始采用导csv的形式,
导出效率也很快,但是导入时会出现乱码,也设置了本地编码的环境变量NLS_LAGUAGE与数据库保持一致
,但导入始终是乱码。所以通过下面两种方法解决

方法一、采用oracle最原始dump文件的导出再导入的形式

本方法由于导出的是二进制文件,就不会存在编码问题。效率也很高

1、数据导出

1.1、创建导出参数文件

参数文件 expFile.txt 内容如下
路径:C:\Users\wanghao\Desktop

tables=ggcode_test //需要导出的表
rows=y //导出表数据
file=D:\software\oracle11\exp\ggcode_test.dmp  //导出文件路径以及文件名
log=D:\software\oracle11\exp\exp.log	//导出日志

1.2 执行导出

打开cmd 直接输入

exp ctcheckpasswd@10.248.100.81/ctcore parfile=C:\Users\wanghao\Desktop\expFile.txt

oracle数据库exp导出和imp导入实例演示_参数文件


导出时间花了40多秒效率也非常的高

2、数据导入

导入dump文件前,需要坚持导入的数据库中是否有该表,如果有的话需要drop掉,不然导入时会报错

2.1 创建导入参数文件

导入参数文件impFile.txt
路径C:\Users\wanghao\Desktop

file=D:\software\oracle11\exp\ggcode_test.dmp //导入文件路径以及文件名
tables=ggcode_test   //导入的表
rows=y	//导入数据
fromuser=ctcheck	//数据来自用户
touser=ctuat //导入用户

2.2 执行导入

同样在cmd命令行直接输入即可

imp ctuat/passwd@10.248.100.200/ctcore parfile=C:\Users\wanghao\Desktop\impFile.txt

oracle数据库exp导出和imp导入实例演示_解决oracle文本导入乱码_02


导入差不多50s左右 效率极高

查看结果,成功导入了30w条数数据

oracle数据库exp导出和imp导入实例演示_exp导出演示_03

方法二、通过创建DBLINK方式

在需要导入的数据库创建dblink,然后通过dblink访问需要获取的表数据插入到目标表中
注意为了安全起见。最后在源数据库重新创建一个用户,该用户只有查询权限,然后用该用户创建
dblink,这样就不会出现通过dbliink修改源库的数据了

这里就不需要再赘述。

总结

exp和imp命令导出导入dump文件的形势。通过二进制文件方式导出和导入,不会存在乱码,除非导入导出数据库的编码不一致,同时效率也非常高。但是可能会存在如果用户没有导出 exp_full_database ,导入:imp_full_database权限
需要dba授权。
对于dblink方式也非常的简单,就不存在导出这个步骤,直接通过dblink访问源表,直接插入到目标表。同样这里可能也需要dba创建dba