1


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

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

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

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

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

4

2 回答 2

1

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

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

有关如何使用左连接和右连接等的说明,请参阅此答案有没有办法检查 MySQL 触发器中的查询是否返回空集?

于 2013-07-15T05:59:19.477 回答
1

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

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

于 2013-07-15T05:59:22.393 回答