免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: q15928
打印 上一主题 下一主题

【讨论中】MySQL表的更新变化 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-02-01 07:25 |只看该作者
G8bao7 发表于 2013-01-27 20:53
主键不是自增确实比较麻烦了,自己的一些思路,欢迎拍砖

前提,表中除了主键没有其他唯一索引


谢谢!可能我说的不是很清楚。。。
外部的txt文件是包含了最新的整个表的内容。其实我的需求是要找出现有表和txt文件内容的差异,然后来更新现有表。

1. 更新:记录(根据主键来比较)都在txt文件和现有表中,但有些column值改变了,所以需要更新
2. 增加:记录(根据主键来比较)在txt文件,但不在现有表中
3. 删除:记录(根据主键来比较)不在txt文件,但在现有表中

谢谢lulu版主的建议,我目前的正在尝试用文件层面来做比较,Perl 脚本来比较两数组

论坛徽章:
0
12 [报告]
发表于 2013-02-01 11:58 |只看该作者
q15928 发表于 2013-02-01 07:25
谢谢!可能我说的不是很清楚。。。
外部的txt文件是包含了最新的整个表的内容。其实我的需求是要找出现 ...


我理解你的需求就是做完处理后,“现有表”内容只包含"外部的txt文件"中的内容。(如果又理解错了请忽略下面内容 )
几种方案
一、【推荐】
      新建一个表(假设表名tb_new)与现有表结构完全相同
      然后“tb_new”导入"外部的txt文件"
      再将“现有表”改名为"tb_日期"(表名随意,不重复就行)
      再将“tb_new”改名为“现有表”
      
     缺点:改名处理时如果对“现有表”进行查询,会出现短暂异常(“现有表”不存在),但表改名效率很高,不会持续很长时间
二、清空现有表,然后导入"外部的txt文件"。【不推荐】
       缺点:清空表之后,导入"外部的txt文件"耗时会较长,这期间的查询会产生数据不一致
三、就是你的思路,进行比较然后更新
     缺点:需要逐行比较,比较复杂,效率也是潜在的问题

论坛徽章:
0
13 [报告]
发表于 2013-02-15 12:43 |只看该作者
回复 12# G8bao7

谢谢。我现在也是用你说的第一种方案来做的。但是我主要的需求并不是如何更新表,而是找出新表和旧表之间的差异(更新、增加和删除)。然后这些差异要保存到另一张表里,这样我们就很容易查询每天的记录发生了哪些变化。

我现在基本上已经用Perl完成了这些,在文件(内存)层面上比较每一个column值来找出更新的记录。
   

论坛徽章:
0
14 [报告]
发表于 2013-02-21 17:21 |只看该作者
最彻底的 找个PHP开发人员帮你

论坛徽章:
0
15 [报告]
发表于 2013-02-25 13:50 |只看该作者
为什么PHP?我已经用Perl完成了。。。
当然,我也在学PHP了

论坛徽章:
2
摩羯座
日期:2014-05-29 17:38:40数据库技术版块每日发帖之星
日期:2016-08-05 06:20:00
16 [报告]
发表于 2013-02-26 18:07 |只看该作者
考虑这样的方式:
1.用主key去判断时候存在
2.触发器建在insert和update,见记录表去记录更新变化
3.增加delete stat 列去标示是否被删除及删除时间。

另外,几百行的表,不做个拆分什么的,一个简单的日志分析系统也比这样做好,后续会遇到越来越多的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP