exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件;
imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中。
exp 'system/"123456"@127.0.0.1/orcl' full=y file=C:/dbbak_full.dmp log=C:/dbbak_full.log
full=y:代表的是完全导出。
file:是指定dmp文件的生成位置和文件名。
log:是将导出时的日志写入到指定文件当中。
exp 'system/"123456"@192.168.68.196/orcl' owner=(system,tlzb_ysbz) file=C:/dbbak_onwer.dmp log=C:/dbbak_onwer.log
owner:可以选择多个表用户数据导出,用户名之间用逗号进行分隔
exp 'tlzb_ysbz/"123456"@127.0.0.1/orcl' tables=(BUDGET_INCOME,BUDGET_DATA_INODE) file=C:/dbbak_tables.dmp log=C:/dbbak_tables.log
tables:选择多个表进行导出,注意这时的用户名要改成有对应表的用户名,否则无法导出。
通过query参数可以写sql查询条件进yibu筛选导出的表数据
exp 'tlzb_ysbz/"123456"@127.0.0.1/orcl' tables=(BUDGET_INCOME,BUDGET_DATA_INODE) file=C:/dbbak_tables.dmp log=C:/dbbak_tables.log query=\"where CREATE_TIME>to_date('2021-11-15','yyyy-MM-dd')\"
如果想对dmp文件进行压缩,可以在上面命令后面 加上 compress=y 来实现。
imp 'system/"123456"@192.168.68.95/orcl' full=y file=C:/dbbak_full.dmp log=C:/dbbak_full.log ignore=y
full=y:代表将dmp文件中的所有数据都进行导入;
ignore=y:默认为n,当不加这个参数时,导入的表或视图如果在原有表中本来就存在就无法导入这些数据,加上以后就会直接覆盖这些数据。
imp 'tlzb_ysbz/"123456"@192.168.68.196/orcl' tables=(BUDGET_INCOME,BUDGET_DATA_INODE) ignore=y file=C:/dbbak_tables.dmp log=C:/dbbak_tables.log
注意这种写法会将表导入到默认连接用户下
如何dmp里是多个用户的数据则需要指定导入的表和用户
imp 'tlzb_ysbz/"123456"@192.168.68.196/orcl' fromuser=tlzb_ysbz tables=(BUDGET_INCOME,BUDGET_DATA_INODE) ignore=y file=C:/dbbak_tables.dmp log=C:/dbbak_tables.log
imp 'system/"password"@127.0.0.1/orcl' fromuser=username1 touser=username2 file=expfile.dmp
fromuser:把当前的dmp文件中的指定用户下的数据取出。
touser:把取出的数据指定一个用户进行输入。
fromuser和touse也可以使用括号来选择多个用户进行导出导入