怎么把一个SQL数据库内的三个关系相同的表合并为一个表
发布网友
发布时间:2022-04-09 17:48
我来回答
共4个回答
热心网友
时间:2022-04-09 19:18
给出表结构吧
或者借用excel表的方法:
首先,用exec master..xp_cmdshell 'bcp "aa..POST" out "d:\tt.xls" -c -SQINKD-Usa -Psa'将POST 表的所以数据导到excel中。
注意:aa是你的数据库名称,放在d盘下的名称为tt的excel表中,SQINKD是你的服务管理器器名称。
第二, 再依照这个方法,master..xp_cmdshell 'bcp "aa..POST2" out "d:\tt2.xls" -c -SQINKD-Usa -Psa'将剩下的2个表导出,如果你的三个表结构相同,excel名称不变即可。
第三,把POST3也按照这个方法导出master..xp_cmdshell 'bcp "aa..POST2" out "d:\tt3.xls" -c -SQINKD-Usa -Psa'。
第四,整合这三个excel,数据怎么放看你自己的了,并取名为post.xls。
第五,新建一个新表new_post,表结构与POST相同,用
insert into new_post
select *
from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=d:\post.xls',sheet1$)这个语句导入整合的所有数据。之后建议将原来的三个表内容删除以节约空间,一定要等所有操作完成之后删除原表。
别看多,共就四条语句,操作起来很简单,几分钟就搞定了。
热心网友
时间:2022-04-09 20:36
wjzhch1,不用急的,就用max0960的方法,不过再加个*条件limit,每次加5000条,这样你就不用一次等70万条数据插入时间,悠着点,呵呵
类似下面这样
insert into post(c1,c2,c3,...)values(select c1,c2,c3....form post1 limit 0, 5000);
insert into post(c1,c2,c3,...)values(select c1,c2,c3....form post1 limit 5001, 10000);
当然,也可以在 select 语句中加入where等*条件,防止重复插入等
语句多写几条没关系,试试看
热心网友
时间:2022-04-09 22:10
最安全的办法是一张一张表的追加.
insert into post(c1,c2,c3,...)values(select c1,c2,c3....form post1);
其中c1,c2,c3的字段都要对应,post1导入完成后再改成post2就可以了.不知道这里能不能用*,如果可以测试的话,你可以试试看.
热心网友
时间:2022-04-10 00:02
insert into post
(select * from post2
union
select * from post3)
对不起,是我没问清楚。按上述语句,前提条件是:三个表的表结构必须相同,且post有主键时,post2和post3中不能与post中重复。能描述一下这三个表结构吗?