以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- A、B表 数据同步 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138385) |
-- 作者:fuucc -- 发布时间:2019/7/30 10:59:00 -- A、B表 数据同步 两个表格字段一模一样。想实现A表数据提交到B表,原来是清空B表,再把A表数据复制到B表,对于少量数据,这边效率还可以。 但对于6万以上数据,这样效率很低,需要很长时间。 有没有办法,只同步差异部分。如已身份证为关键字段,A表有的B表没有的,就新增到B表,B表有的A表没有的,就到B表删除。就类似于数据同步功能。 部分字段修改,目前没有想到如何处理。 这是大概思路,不知可行否,请专家抽空指导,谢谢! |
-- 作者:有点蓝 -- 发布时间:2019/7/30 11:24:00 -- 改为外部数据源,使用SQL处理 insert into B表 select * from A表 where 身份证 not in (select 身份证 from B表)
|
-- 作者:fuucc -- 发布时间:2019/7/30 11:33:00 -- 有点蓝专家,A表是内部数据源,B表是外部数据源,是否也可以套用以上处理? |
-- 作者:有点蓝 -- 发布时间:2019/7/30 11:39:00 -- 不能了。找出b表最大的主键值,只把大于这个主键的数据填充过去 Dim id As Integer = DataTables("B表").Compute("Max(_Identify)") Dim f As New Filler f.SourceTable = DataTables("A表") \'指定数据来源 f.DataTable = DataTables("B表") \'指定数据接收表 f.Filter = "[_Identify] > " & id f.Fill() \' |
-- 作者:fuucc -- 发布时间:2019/7/30 11:52:00 -- 把A的身份证存为LIST数组,然后在B表处理 not in,可行否? |
-- 作者:有点蓝 -- 发布时间:2019/7/30 12:03:00 -- 不可行。不同数据源无法使用SQL处理 |
-- 作者:fuucc -- 发布时间:2019/7/30 12:11:00 -- 内部数据源的DeleteFor有没有 not in 这种SQL方法呢 |
-- 作者:fuucc -- 发布时间:2019/7/30 12:14:00 -- DataTables("zxztball").DeleteFor("[xueqi]=\'" & Tables("xqnf").Rows(0)("xueqi") & "\'") 这句是可行的,可不可以加个NOT in 条件。
|
-- 作者:fuucc -- 发布时间:2019/7/30 13:16:00 -- 感谢,发现是可行的,保存数据到一个数组,然后用Deletefor就行了。 |