0

我正在使用mysql。

每个月我都会上传一个 txt 文件创建一个表,然后在启动查询以过滤结果后,我想将新行添加到一个更大的表中,该表保留一年中的所有月份。

我每个月创建的表始终保持相同的结构。

我已经试验过,在启动查询后,插入 INSERT INTO table_name 语句,所有行都有效地插入到更大的表中,但问题是如果我忘记了一个月我已经上传了数据并再次处理它有没有过滤器,行将被第二次插入,我会发现它们重复。

有没有办法避免这种情况?

我不在这两个表上使用主键。

4

3 回答 3

1

在您分类为唯一的列上设置唯一索引。然后使用INSERT IGNORE而不是仅插入

于 2013-07-11T20:51:26.083 回答
0

我理解你的问题。

使用文件的 md5 值在表上添加一列。

在上传之前检查刚刚计算的 md5 值是否存在于表中的至少一行中,如果是,请不要上传。

md5可以保证你一个很好的唯一性。

干杯!

于 2013-07-11T20:59:27.000 回答
0

我会在评论中写这个,但是链接太多,所以会太长。

您只需要实现键/约束并重新创建表(重新运行您的创建表脚本)

查看这些链接。

约束
唯一约束
主键

如果您不想使用主键,请使用唯一约束。
唯一(column1,column2,column3,...,columnLast)

于 2013-07-11T21:00:26.707 回答