1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > cmd导入数据到Oracle oracle在cmd下通过命令导入导出数据

cmd导入数据到Oracle oracle在cmd下通过命令导入导出数据

时间:2020-09-05 11:15:58

相关推荐

cmd导入数据到Oracle oracle在cmd下通过命令导入导出数据

1、首先在cmd下切换到oracle的客户端的exp.exe所在的bin目录下,例如

D:\oracle\product\10.2.0\client_2\BIN

数据导出:导出的数据库名称是在tnsnames.ora文件中定义的

1将数据库zxcc完全导出,用户名kf密码zx导出到D:\zxcc.dmp中

expkf/zx@zxccfile=d:\zxcc.dmpfull=y

full=y表示全库导出。full总共有2个可选项yes(y)/no(n),缺省情况下full=no,这时只会将该用户下的对象导出。

2将数据库zxcc中kf用户与cc用户的表导出

expkf/zx@zxccfile=d:\zxcc_ur.dmpowner=(kf,cc)

full方式可以备份所有用户的数据库对象,包括表空间、用户信息等,owner=XX只能备份指定用户的对象,其他用户下的就不备份了,EXP中full=y和owner=XX是不能同时使用的。

3将数据库zxcc中的表kf_operator、kf_role导出

expkf/zx@zxccfile=d:\zxcc_tb.dmptables=(kf_operator,kf_role)

tables=xx表示备份相关表,不能同时和owner、full使用。

4将数据库中的表kf_operator中的字段oper_id以"00"打头的数据导出

expkf/zx@zxccfile=d:\zxcc_t.dmptables=(kf_operator)query=\"whereoper_idlike'00%'\"

query主要是导出合适条件的数据。使用该参数时,需要注意对所有操作系统保留字符都要使用转义符号。若有括号()也需要转义:

query=\"wheredt=to_date\'−09−22\',\'yyyy−mm−dd\'\"。

如果遇到条件比较繁琐的语句,频繁的转义操作不仅费时,还很容易出错。我们可以使用exp或expdp的PARFILE参数避免query内容的繁琐转义问题。

例:

oracleDBALNP01>cat>zxcc.par

tables=kf_operator

file=zxcc.dmp

query="wheredt_time=to_date('-06-25','yyyy-mm-dd')"

这时就可以尽情的再双引号中写条件语句了。

上面是常用的导出,对于比较大的数据库,我们可以对导出文件进行压缩处理,可用winzip把dmp文件进行压缩。

也可以在上面命令后面加上compress=y来实现。

数据的导入:

1、将D:\zxcc.dmp中的数据导入zxcc数据库中。

impkf/zx@zxccfile=D:\zxcc.dmp

导数据得时候,有可能报错。为什么?有以下主要的原因:

A.导入的对象(表,视图,方法等)原本不属于当前连接的用户的

B.导入的对象在该数据库的指定用户下已经存在

C.导入的对象的原本用户不在这个数据库里

对于这三个问题的处理方法如下:

a/c、所有对象全部导入到指定的账户下:

impkf_new/zx@zxcc_newfile=d:\zxcc.dmpfromuser=kftouser=kf_new

其中fromuser=kf为.dmp文件里的对象的原先的owner,touser=kf_new为作为导入的对象的新的Owner.

b、忽略/插入数据:

impkf_new/zx@zxcc_newfile=d:\zxcc.dmpignore=y

其中ignore=y告诉imp.exe把数据直接插入到相应对象(并且如果导入的对象里面有其他的对象,如约束,索引等,会在数据插入后被创建)。

2、将d:\zxcc_tb.dmp中的表tb_operator导入

impkf/zx@zxccfile=d:\zxcc_tb.dmptables=(tb_operator)

忽略加载约束

有时候导数据进来的时候,我们不需要把它的约束,比如一些外键约束等都导进来,可以加上参数constraints=N

不加载索引(比如唯一性的索引),可以加上参数indexs=N

只加载结构,不加载数据,如果只要表的结构等定义(约束,触发器),而不要里面的数据,可以加上参数rows=N

对于上述操作登陆操作的用户需是管理员,如果不是管理员,而是普通用户,那么这个用户必须有创建删除对象的权利,对象可能包括表,视图,方法,存储过程等等常见的对象。为什么“可能”包括?因为这个视导入导出的时候是否涉及相关类型的对象而定。

Impkf/zx@zxcc_newfile=d:\zxcc.dmpfromuser=kftouser=kf_newignore=y

基本上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

注意:

(1)、操作者要有足够的权限,权限不够会有提示。

(2)、数据库链接正常,可以用tnspingzxcc来检测数据库zxcc能否连上。

(3)、导入/导出数据库时注意字符集。可能会出现导出/导入时数据库字符集不一致而报错。

oracle数据库其他常用命令:

1、给用户增加导入数据权限的操作

第一,启动sql*puls

第二,以管理员(DBA)用户登陆

第三,createuser用户名IDENTIFIEDBY密码(如果已经创建过用户,这步可以省略)

第四,>grantcreateuser,dropuser,alteruser,createanyview,dropanyview,exp_full_database,imp_full_database,dba,resource,createsessionto用户名字;

第五,运行cmd进入dmp文件所在的目录,

impuserid=管理员用户名/密码full=yfile=filename.dmp

或者impuserid=管理员用户名/密码full=yfile=filename.dmp

2、Oracle不允许直接改变表的拥有者,利用Export/Import可以达到这一目的.

先建立.par文件()

然后,使用时命令如下:impparfile=/filepath/import9.par

例import9.par内容如下:

FROMUSER=user

TOUSER=user_new(注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)

ROWS=Y

INDEXES=Y

GRANTS=Y

CONSTRAINTS=Y

BUFFER=409600

file==/filepath/xxxx.dmp

log==/filepath/import_log.log

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。