急,数据的导入(100分)

  • 主题发起人 主题发起人 silverwolf
  • 开始时间 开始时间
S

silverwolf

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个数据库A,B(内有若干张相同结构的表,B内表结构可以修改,A不可以),
要把B中各表的记录添入A中对应表,如果A中已存在对应记录(主键相同则认为记录
相同),那么提示是否覆盖改该记录。有没有哪位高手做过类似的程序,说说自己的
做法,或者提供一个效率比较高的方法。
 
那就得一条一条读,然后判断了
 
To :ugvanxk
那效率也太低了,如果表的数目较多,……

能不能通过修改表的结构来实现?
 
insert into a
select * from b where not id in (select id from a)
 
insert into a
select * from b where id not in (select id from a)
 
數度快,好像要涉及到算法,排序,查照等.
 
找出所有重复记录,覆盖 标记做到 b表 ,删除 a 表重复数据 ,b表数据插入
 
"
insert into a
select * from b where id not in (select id from a)
"
可以吗?A,B是数据库而不是数据表啊,能这么运行吗?
 
应该要首先查出数据库A,B中的用户表,然后再一个一个表去操作吧
 
to:ysai
你的方法虽快,但是并不是说记录相同就不允许覆盖。
再听听大家的说法吧。

 
insert into a
select * from b where not id in (select id from a)
然后
select * from b where id in (select id from a);
列出B表中A表已有的记录,让用户作一次选择,然后再一起写入A表
可能要用个临时表,存放要覆盖的记录
delete * from a where in in (select id from TempTab);
insert into a (select * from TempTab);
 
to: ysai
我所问的问题其实是在很理想的情况下,没有考虑数据的完整性,是否被锁定……。
估计在判断时候逐条是不能省了,插入的时候应该是设定标示一次性插入。
听……
 
我上面的回答就是这个意思,先把A表中没有的插入,再把两表中都有的选择出来,
让用户查看,设置某条是否要覆盖,然后再一次写入A表中,用UPDATE也可以

提示,可以用SELECT语句加一个逻辑字段(对于提示要覆盖的),并设为假,让用户直接
在表中更改,然后再据此更新A表
 
多人接受答案了。
 
后退
顶部