Foxtable(狐表)用户栏目专家坐堂 → A、B表 数据同步


  共有3380人关注过本帖树形打印复制链接

主题:A、B表 数据同步

帅哥哟,离线,有人找我吗?
fuucc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:76 积分:1041 威望:0 精华:0 注册:2016/7/1 9:49:00
A、B表 数据同步  发帖心情 Post By:2019/7/30 10:59:00 [只看该作者]

两个表格字段一模一样。想实现A表数据提交到B表,原来是清空B表,再把A表数据复制到B表,对于少量数据,这边效率还可以。
但对于6万以上数据,这样效率很低,需要很长时间。
有没有办法,只同步差异部分。如已身份证为关键字段,A表有的B表没有的,就新增到B表,B表有的A表没有的,就到B表删除。就类似于数据同步功能。
部分字段修改,目前没有想到如何处理。
这是大概思路,不知可行否,请专家抽空指导,谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/30 11:24:00 [只看该作者]

改为外部数据源,使用SQL处理

insert into B表 select * from A表 where 身份证 not in (select  身份证 from B表)

 回到顶部
帅哥哟,离线,有人找我吗?
fuucc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:76 积分:1041 威望:0 精华:0 注册:2016/7/1 9:49:00
  发帖心情 Post By:2019/7/30 11:33:00 [只看该作者]

有点蓝专家,A表是内部数据源,B表是外部数据源,是否也可以套用以上处理?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:76 积分:1041 威望:0 精华:0 注册:2016/7/1 9:49:00
  发帖心情 Post By:2019/7/30 11:52:00 [只看该作者]

把A的身份证存为LIST数组,然后在B表处理 not in,可行否?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/30 12:03:00 [只看该作者]

不可行。不同数据源无法使用SQL处理

 回到顶部
帅哥哟,离线,有人找我吗?
fuucc
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:76 积分:1041 威望:0 精华:0 注册:2016/7/1 9:49:00
  发帖心情 Post By:2019/7/30 12:11:00 [只看该作者]

内部数据源的DeleteFor有没有 not in 这种SQL方法呢

 回到顶部
帅哥哟,离线,有人找我吗?
fuucc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:76 积分:1041 威望:0 精华:0 注册:2016/7/1 9:49:00
  发帖心情 Post By:2019/7/30 12:14:00 [只看该作者]

 DataTables("zxztball").DeleteFor("[xueqi]='" & Tables("xqnf").Rows(0)("xueqi") & "'")
这句是可行的,可不可以加个NOT in 条件。

 回到顶部
帅哥哟,离线,有人找我吗?
fuucc
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:76 积分:1041 威望:0 精华:0 注册:2016/7/1 9:49:00
  发帖心情 Post By:2019/7/30 13:16:00 [只看该作者]

感谢,发现是可行的,保存数据到一个数组,然后用Deletefor就行了。

 回到顶部