关于批量比对和插入功能的SQL实现

shawls 2009-07-03 12:07:41
现在有一个这样的项目:

表:
DATA_INSERT
DATA_BUFF
DATA

DATA_INSERT表内是原始数据
DATA_BUFF表内是缓存数据
DATA表里面是最终数据

数据流程如下:
读文本数据,只要符合格式,写如INSERT表,
读INSERT表,比对BUFF表,如果BUFF表中没有重复,则插入BUFF表
读DATA表,比对DATA表,如果DATA表中没有重复,则插入DATA表


现在的问题是,如何将没有重复的数据批量插入下一个表,我现在是通过.NET开发,一条一条比对,非常慢.
但是我用INSET语句去批量插入,总是不成功,有兄弟有好的帮助么?
...全文
32 点赞 收藏 5
写回复
5 条回复
ACMAIN_CHM 2009年07月03日

读INSERT表,比对BUFF表,如果BUFF表中没有重复,则插入BUFF表
insert into DATA_BUFF select * from DATA_INSERT where id not in (select id from DATA_BUFF);



读DATA表,比对DATA表,如果DATA表中没有重复,则插入DATA表
insert into DATA select * from DATA_BUFF where id not in (select id from DATA);


回复 点赞
smartcatiboy 2009年07月03日
不知道你是如何比对插入的,代码看看
回复 点赞
shawls 2009年07月03日
[Quote=引用 1 楼 smartcatiboy 的回复:]
看不懂,为什么要分3个表???
[/Quote]

数据要分阶段处理啊,插入是毛坯数据,BUFF是缓冲数据,DATA是常备数据,最终的DATA库可能会达到千万级的数据量
回复 点赞
smartcatiboy 2009年07月03日
看不懂,为什么要分3个表???
回复 点赞
wwwwb 2009年07月03日
读文本数据,只要符合格式,写如INSERT表,

读INSERT表,比对BUFF表,如果BUFF表中没有重复,则插入BUFF表
insert into DATA_BUFF
select a.* from DATA_INSERT a
left join DATA_BUFF b on a.id=b.id where b.id is null

读DATA表,比对DATA表,如果DATA表中没有重复,则插入DATA表
Insert into DATA
select a.* from DATA_INSERT a
left join DATA_BUFF b on a.id=b.id where b.id is null
回复 点赞
发动态
发帖子
Access
创建于2007-09-28

7015

社区成员

2.8w+

社区内容

Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区公告
暂无公告