Oracle学习问题 2014-06-20

一、数据导出:

        注意:以下所有命令不是在sqlplus下执行的,而是在cmd命令窗口下执行的,本机一定要装有Oracle,因为exp和imp是oracle的命令,我开始犯的大错啊,一直在sqlplus下执行!

  1、 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中

 

  exp system/manager@TEST file=d:\daochu.dmp full=y    (有时间导出的时候会出现 无法解析指定的连接标识符的错误, 你把 @TEST 去掉就不报错了,具体不太清楚为什么)

 

  2、 将数据库中system用户与sys用户的表导出

 

  exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)

 

  3、 将数据库中的表table1 、table2导出

 

  exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)

 

  4、 将数据库中的表table1中的字段filed1以"00"打头的数据导出

 

  exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

 

  上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。

 

  不过在上面命令后面 加上 compress=y  就可以了

 

  二、数据的导入

 

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

 

  imp system/manager@TEST  file=d:\daochu.dmp

 (有时间导出的时候会出现 无法解析指定的连接标识符的错误, 你把 @TEST 去掉就不报错了,具体不太清楚为什么)

  上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

 

  在后面加上 ignore=y 就可以了。

 

  2 将d:\daochu.dmp中的表table1 导入

 

  imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)

 

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

 

  注意:

  你要有足够的权限,权限不够它会提示你。


2,Oracle序列的问题

首先序列主要是为了解决oracle主键自增的,因为oracle不像mysql一样,可以设置主键自增,oralce是通过序列(SEQUENCE )和触发器(Trigger)来实现主键自增策略的

    因为以前没有用到oracle序列,今天才知道自己理解是错的,而且钻进了死胡同,同事怎么讲都不懂,不过,还好,最后懂了

,序列(requence)和表是没有关系的, 因为项目在上线时要初始化一些数据,假如有一个table中有3条数据, 下一个主键id需要是4,那么再你建立序列的时候就应该建立一个序列,开始值是4,而不是1,每一个序列和表是没有关系的,你可以N多个表用一个序列,当然,应该没有人这么做吧,应该都是一个表一个序列吧! 举例说明,假如现在有一个表emp 员工表,内有三条数据 ,id分别是1,2,3,然后现在create一个序列,初始值是4,每次+1 ,当你第一次调用这个序列时,返回4,然后你再手动将4设置到emp对象的主键上,此时,你不用纠结,不管你停机还是怎么,下次你再次调用这个序列时,都不会是4了,当然也不会是5,因为每次初始化序列时,他都会加载20个,如果你断电或者宕机,下次就会从21开始,不管你上次缓存中的20个用了没有,都不会再使用了




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值