我正在爬网一些网站,并将结果存储在sqlite中,因为我的爬网可能每个月重复一次,但是我不想将重复的结果存储在数据库中,该怎么办?

例如,我第一次

insert into tableName(A, B, C, D, E) values(a,b,c,d,e)


那么我的数据库将具有该记录,下次我对该网站进行爬网时,我会做同样的事情,但是我不想存储重复的结果,我能做的最好的方法是什么?

此外,如果我使用MySQL,该怎么办?

最佳答案

使用sqlite create your table with a UNIQUE constraint

CREATE TABLE tableName (A INTEGER, B INTEGER, C INTEGER, D INTEGER, E INTEGER,
UNIQUE (A, B, C, D, E));


然后

INSERT OR IGNORE INTO tableName (A, B, C, D, E) values (a,b,c,d,e);


will only insert a new record if (a,b,c,d,e) is unique-即表tableName中尚未存在。

add a UNIQUE index to an already existent table

CREATE UNIQUE INDEX unique_idx on tableName(A, B, C, D, E);




或者,使用MySQL,create a table with a unique index

CREATE TABLE tableName (A INT, B INT, C INT, D INT, E INT,
UNIQUE KEY unique_idx (A, B, C, D, E))


然后use INSERT IGNORE

INSERT IGNORE INTO tableName (A, B, C, D, E) values (a,b,c,d,e)


add a UNIQUE KEY index to an already existent table

ALTER TABLE tableName ADD UNIQUE KEY unique_idx (A, B, C, D, E);

关于mysql - sqlite插入,而删除完全重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30697139/

10-13 02:02