【问题标题】:Eliminating duplicate entries while uploading excel files to mysql将excel文件上传到mysql时消除重复条目
【发布时间】:2013-07-12 02:01:18
【问题描述】:


我正在开发一个应用程序,网站管理员可以在其中上传 excel 表格以将数据上传到数据库。当然,我使用 this 优秀的库来将文件上传到我的 mysql 数据库。

问题:一切正常,但现在的问题是,如果管理员上传列表,我必须在页面上向管理员显示上传的数据并要求他确认上传点击按钮。直到确认点我将数据存储在数据库中的临时表中。一旦管理员确认,我将其移动到数据库中的永久表并删除临时表中的条目。现在如果管理员编辑相同excel,即他添加了一些记录并再次上传,以前的记录被重复,这不应该发生。

我想检查 excel 文件中的记录是否已经存在(基于与每条记录关联的唯一 id)。这不是主键,而是否。与 DB 和 Excel 工作表中存在的每条记录相关联。

我正在寻找有关在删除临时表信息时如何检查记录是否已存在的建议。每次上传临时表数据(如果没有删除)是否可以与文件数据进行比较?如何检查文件记录是否与数据库中的一次相似并仅上传新添加的记录?

任何建议,都会有助于走正确的路。
感谢您的关注

【问题讨论】:

  • 如果您已将记录存储在临时表中,则可以运行内部联接查询来识别重复记录,并根据需要向用户突出显示或自动删除。

标签: php mysql upload phpexcel


【解决方案1】:

要识别新记录,请在临时表和永久表上使用左连接或右连接(您的偏好)将新记录插入到永久表中。您还可以使用此技术来确定是否需要从永久表中删除记录。

正如@Pynner 在他之前的评论中指出的那样,使用内部连接来更新当前数据库中的记录。

查看这个答案了解如何使用左右连接等Is there any way to check whether or not the query inside a MySQL trigger returns an empty set?

【讨论】:

  • 会检查并恢复。感谢您的回复!
  • 正在做一些其他的事情。一旦我尝试它肯定会接受答案。
【解决方案2】:

您可以使用插入忽略,如果应用了适当的唯一索引,它将忽略重复记录。这将忽略已插入的条目并仅添加新条目。我猜这就是你想要的

您需要做的就是代替 插入 tbl_name (col1,col2) 值(val1,val2); 做 INSERT IGNORE INTO tbl_name (col1,col2) VALUES(val1,val2); 这应该停止重复并只插入新条目。请注意,这依赖于应用正确的索引。

【讨论】:

  • 您能否详细说明并分享该示例的链接?
猜你喜欢
  • 2016-10-17
  • 2010-12-29
  • 2012-11-27
  • 1970-01-01
  • 2013-04-24
  • 2021-01-22
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
相关资源
最近更新 更多