`
flyshark
  • 浏览: 25427 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle导入导出随笔

 
阅读更多

先来点虚的:

      exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,
      imp命令可以把dmp文件从本地导入到远处的数据库服务器中。

 1.导出数据库:

exp shark_3/shark_3@STAGE2[192.168.6.48] file=d:/sharkdb.dmp

 

2.导入数据库:     

imp shark/shark@SHARK[192.168.6.112] file=d:/sharkdb.dmp  full=y ignore=y

       ---导入时,其中的full=y可以考虑不要,ignore=y忽略冲突

 

再来点实的:

 

      有时候,开发环境和准生产环境的数据库表结构不同,想把准生产环境的表结构导到开发环境数据库来,但又发现这些表已经存在了,只是增加了列;怎么办呢?
      1.drop user再重建?可惜俺不是DBA,木有那些个权限;

drop user shark cascade;
create user shark identified by shark;
grant connect,resource,dba to shark;

 
      2.直接导入么已存在的表肯定报错,去掉full=y么,改变了结构又已存在的表结构还是老的;


      OK,有办法了,先用查询语句生成对当前用户下所有表的dorp语句, 然后批执行一下,就爽了(这个相当truncate user ^_^),SQL如下:

 select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables;

这时候再导入,就不会报错了。

 

 

类似的还有:(这个网上多,比俺找的全^_^)

--drop sequence
select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views;

--drop sequence
select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from user_sequences;  

--drop function
select 'drop function ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='FUNCTION';  

  --drop procedure
  select 'drop procedure ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PROCEDURE';  

  --drop package
  select 'drop package ' || object_name||';'||chr(13)||chr(10) from user_objects where object_type='PACKAGE';   

 
      有时候在数据导出时,会发现有N多的日志表,日积月累,里边数据还超大,导出来又没啥用;
怎么办呢?举一反三,俺们可以再生成如下SQL,再批执行一下:(哇噻,导出的时候快多了^_^)

select 'truncate table ' || table_name ||';'||chr(13)||chr(10) from user_tables where table_name like '%LOG' OR table_name like '%BAKE';

 

    旧瓶装心酒。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics