sql复制表结构和数据

来源:百度文库 编辑:神马文学网 时间:2024/06/03 11:37:00
sql复制表结构和数据 功能:将查询的结果放到一个新表中去,查询结果可以来源于一个表或多个表

SQL SERVER中使用SELECT … INTO语句

按照使用场合可以分为以下几类:

1. 实现全表备份:如:SELECT * INOT t1 FROM titles

2. 备份表的一部分列(不写*而写出列的列表)或一部分行(加WHERE条件)

如: SELECT title_id,title,price INTO t2 FROM titles—部分列

 SELECT * INTO t2 FROM titles WHREE price>10 –部分行

SELECT title_id,title,price INTO t2 FROM titles WHREE price>10 –部分行和部分列

3. 只复制表的结构:如:SELECT * INOT t1 FROM titles WHERE 1=2

4. 查询结果来源于多个表:如:

SELECT title_id,title,pub_name INTO t3

FROM titles t INNER JOIN publishers p

ON t.pub_id=p.pub_id

数据复制

第一次是导出的时候

当时为了导出一些数据然后在其他的系统中导入,表的结构是一样的,所以我就新建了一个数据库,然后:

select * into [DB_A].table_A from [DB_B].table_B

这句话的意思就是从DB_B这个数据库中的table_B导出数据,到数据库DB_A中的table_A,这句话的好处就是它会在DB_A中创建一个 table_A名称的表而且会按照table_B的表结构创建字段,然后再把table_B中的全部数据插入到table_A中,这样就省去了我创建 table_A和他的字段的过程.

第二次是导入的时候

需要把还原的数据库中的数据导入到我们的项目库中,这次由于项目库中的表都是存在的所以只能用:

insert into [DB_B].table_B select * from [DB_A].table_A

这样只会把数据导入到项目库中

第三次是把一个表拆成多个表,但是里面的数据也要插入到相应的表中

这次比较麻烦了,当时由于表的结构都不一样了,开始是用的一个本方法,就是把源表直接用第一种方法复制成一个表,然后再把里面的字段修改或删除,勉强完成了.

但是过后尝试发现insert into 可以加字段就变成了:

insert into table_A(id) select id from table_B

这样就直接把table_B中的id列复制到了table_A的id这列中,非常方便.