我有一个格式为
的制表符分隔文本文件id | field 1 | field 2 ...
我想将此插入到以id为主键的mysql数据库中,但文本文件可能包含重复的id。
答案 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是基于第一个字段的输入文件,只输出在第一个字段键入的哈希中没有非零值的行