数据迁移:oracle数据库表结构导出exp、导入imp

导出一个用户(userA)下的表结构到另一个用户(userB)下:

  第一次使用的是exp、imp命令,同事告诉我可以使用expdp、impdp,两者差异不大,但是后者的功能更多一点,比如导入数据表空间的问题,impdp可以直接使用"remap_tablespace",下一篇文章在粗略的写一下。

导出:
$exp  userA/userApwd@oracle  file=/home/uat2cu/sjqywj/usera.dmp  log=user.log  rows=n tables='(table_name1,table_name2)' owner=userA;

$exp userA/userApwd@oracle file=/home/uat2cu/sjqywj/xxx.dmp log=xxx.log rows=n tables=’(table_name1,table_name2)’;

exp可选参数:
参数 备注
owner=userA 导出用户userA的数据表
rows=n 只导出表结构、不导出表数据,默认为 y
tables = (name1,name2) 导出指定的表。在linux中会报错syntax error near unexpected token `(’ 解决方法,在括号两边加 ‘引号
full=y 表示导出全部数据,如视图、索引关联关系等
query query=\“where id < 100\” 引号要通过转义符转义
inctype 增量导出模型,oracle9i的参数已经被废弃

  可以将参数组织成.par文件导出数据,建立一个forexp.par文件,文件内容为exp导出参数,eg:

// forexp.par
file = /home/uat2cu/sjqy/usera.dmp
log = user.log
full = y
rows = n
owner = userA
table = (name1,name2)
query = "where id < 100"

  $exp userA/userApwd@oracle parfile = forexp.par

导入:

$ imp userB/userBpwd@oracle file=/home/uat2cu/sjqywj/xxx.dmp log=xxx.log fromuser=userA touser=userB commit=y ignore=y tablespaces=表空间
ignore=y(表示忽略错误创建)

$  imp  userB/userBpwd@oracle file=/home/uat2cu/sjqywj/usera.dmp  log=user.log  ignore=y
imp可选参数(常用)
参数 备注
fromuser 所有人用户名列表
tables 要导入的表名
ignore 忽略错误创建,默认为n
commit 数据分批提交,对大的数据进行imp操作应该使用commit=y参数,防止imp中断,数据回滚占用更多时间
rows 导入表数据,默认为Y
indexes 导入索引,默认为Y

你可能感兴趣的:(日出云海)