oracle数据库之间的导入、导出,复制数据库表结构(无数据)

时间:2023-01-05 14:01:39

看看jdbc:oracle:thin:@192.168.88.205:1521:test能不能访问,可以 telnet 192.168.88.205 1521试试

 

1 创建用户语句,赋权限

create user 用户名 identified by 密码;
grant connect,resource,dba to 用户名;

2 导入导出数据库

   exp system_V1/12345@196.168.1.10:1521/iwms  file=d:/wenjian.dmp owner=(system_V1) 
imp system_V2/88075998@196.168.1.10:1521/orcl full=y file=d:/wenjian.dmp ignore=y


3 如何清空一个数据库

先导入一个数据库,然后使用这条语句,获取到所有删除表记录的语句,批量执行即可,用plsql导出功能,导出这些批量sql

select 'delete table '||table_name||';' from user_tables


4 “||”在oracle或SQL中的作用

连接字符串或者查询结果中的字段,比如 select column1||column2 from table;       select '123'||'456'||'789' from dual;


数据导出:
 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
   exp system/manager@196.168.1.10:1521 file=d:\daochu.dmp full=y
 2 将数据库中system用户与sys用户的表导出
   exp system/manager@196.168.1.10:1521 file=d:\daochu.dmp owner=(system,sys)
 3 将数据库中的表table1 、table2导出
   exp system/manager@196.168.1.10:1521 file=d:\daochu.dmp tables=(table1,table2)
 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@196.168.1.10:1521  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
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
 2 将d:\daochu.dmp中的表table1 导入
 imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)
 
 基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。
 
注意:
 你要有足够的权限,权限不够它会提示你。
 数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

 

数据导出:
exp hkb/hkb@@196.168.1.10:1521 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;

导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!

同名用户之间的数据导入:
imp hkb/hkb@@196.168.1.10:1521  file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y

不同名之间的数据导入:
imp system/test@@196.168.1.10:1521 fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp

log=c:\orabackup\hkbimp.log;

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. 复制表结构及其数据: create table table_name_new as select * from table_name_old 

2. 只复制表结构: create table table_name_new as select * from table_name_old where 1=2; 或者: create table table_name_new like table_name_old 

3. 只复制表数据:如果两个表结构一样:insert into table_name_new select * from table_name_old 

如果两个表结构不一样:insert into table_name_new(column1,column2...) select column1,column2... from table_name_old