我正在使用mysql。
每个月我上传一个txt文件创建一个表,然后在启动查询以过滤结果之后,我想将新行添加到一个更大的表中,该表保留了一年中的所有月份。
我每个月创建的表始终保持相同的结构。
我已经尝试过在启动查询后插入INSERT INTO table_name语句所有行都被有效地插入到更大的表中,但问题是如果我忘记了一个月我已经上传了数据并且我处理了它再次没有过滤器,第二次插入行,我会发现它们是重复的。
有没有办法避免这种情况?
我不在任何一个表上使用主键。
答案 0 :(得分:1)
在您列为唯一的列上设置唯一索引。然后使用INSERT IGNORE
而不是仅插入
答案 1 :(得分:0)
我理解你的问题。
使用文件的md5值在表格上添加一列。
在上传之前,检查表中至少有一行中是否存在刚刚计算的md5值,如果是,则不上传。
md5可以保证你的独特性。
干杯!
答案 2 :(得分:0)
我会在评论中写这个,但链接太多,所以太长了。
您只需要实现键/约束并重新创建表(重新运行您的创建表脚本)
查看这些链接。
Constraints
Unique Constraint
Primary Keys
如果您不想使用主键,请使用唯一约束 UNIQUE(column1,column2,column3,...,columnLast)