在mysql中创建一个没有重复值的数据库

时间:2011-12-24 08:34:34

标签: mysql database

我有一个格式为

的制表符分隔文本文件
id | field 1 | field 2 ...

我想将此插入到以id为主键的mysql数据库中,但文本文件可能包含重复的id。

  1. 如何确保每个ID只有一个条目。
  2. 如何在具有相同身份证的两条线路之间做出选择(是的,它们可能不一致,但可以选择其他线路,如第一次或最后一次出现)

3 个答案:

答案 0 :(得分:2)

从文本文件中逐行阅读,解析该行并使用INSERT ... ON DUPLICATE KEY UPDATE Syntax.

答案 1 :(得分:1)

我会在SELECT之前执行INSERT并计算SELECT返回的行数。像这样:

SELECT * FROM yourTable WHERE yourTable.id = :id 

如果返回任何行,请不要插入并转到下一行。否则插入它。

编辑:这将是一个后期策略。如果您可以添加Unique Constraint以保证唯一性,那将是一件好事。类似的东西:

ALTER TABLE yourTable ADD CONSTRAINT ukID UNIQUE (id)

答案 2 :(得分:0)

假设一个Unix shell,我会这样做:

awk '!x[$1]++' inputfile.tsv > uniqfile.tsv

然后从uniqfile中导入。

编辑:要清楚,该脚本uniq是基于第一个字段的输入文件,只输出在第一个字段键入的哈希中没有非零值的行