有的时候我们需要把数据从一张表复制到另外一张表。这两张表可能是同一服务器同一用户同一数据中的两张表,也有可能是不同服务器不同数据库的两张表。下面是我碰到最简单的一种情况:同一服务器同一用户同一数据库中的两张表,下面以a表和b表代替。
一、目标存在的情况下。如从a表复制到b表,b表已经存在。
oracle
insert into b select * from a
sql server
insert into b select * from a
二、目标表不存在的情况下。如从a表复制到b表,b表不存在的。
oracle
create table b as select * from a --a是被复制表
sql server
select * into b from a --a是被复制表
以上语句执行a表的结构和所有记录都会被复制到b表中去。
oracle
create table b as select * from a where 1=1 --a是被复制表
sql server
select * into b from a where 1=2 --a是被复制表
下面我是网上找到的一些简单例子供自己以后参考也供大家一起学习:
====================================================================================
1.不同用户之间的表数据复制
对于在一个数据库上的两个用户A和B,假如需要把A下表old的数据复制到B下的new,请使用权限足够的用户登入sqlplus:
insert into B.new(select * from A.old);
如果需要加条件限制,比如复制当天的A.old数据
insert into B.new(select * from A.old where date=GMT);
蓝色斜线处为选择条件
2.同用户表之间的数据复制
用户B下有两个表:B.x和B.y,如果需要从表x转移数据到表y,使用用户B登陆sqlpus即可:
insert into 目标表y select * from x where log_id>'3049' -- 复制数据
注意:要示目标表y必须事先创建好
如insert into bs_log2 select * from bs_log where log_id>'3049'
3.B.x中个别字段转移到B.y的相同字段
--如果两个表结构一样
insert into table_name_new select * from table_name_old
如果两个表结构不一样:
insert into y(字段1,字段2) select 字段1,字段2 from x
4 将多个表数据插入一个表中
insert into 目标表test(字段1。。。字段n) (select 字段1.。。。。字段n) from 表 union all select 字段1.....字段n from 表
====================================================================================
sql_server不同数据库间复制表
不同数据库表结构 和数据的复制 :
目标数据库不存在要导入的表时:
example:
xuexiao为目标数据库,teaching为源数据库,dbo.course_list已经存在于teaching,想在没有此表的xuexiao库中复制一个用下面的语句完成
:
select * into xuexiao.dbo.course_list from teaching.dbo.course_list
不同数据库之间复制表的数据的方法
当表目标表存在时:
insert into 目的数据库..表 select * from 源数据库..表
当目标表不存在时:
select * into 目的数据库..表 from 源数据库..表
====================================================================================