通过Python脚本向SQL数据库添加唯一项的最佳方法是什么?

gz5pxeao  于 2023-02-14  发布在  Python
关注(0)|答案(1)|浏览(131)

背景:

  • 我有大量包含日志信息的CSV文件。
  • 某些日志文件可能"重叠",因为相同的信息可能存在于两个或多个CSV文件中。
  • 日志文件中的所有信息并非都是必需的,因此使用Python脚本只提取相关信息,以便插入到SQL(lite)数据库中,从而方便查询。
  • 日志文件中"相关"的信息包括序列号、错误ID、事件开始时间戳、事件结束时间戳、错误描述、错误事件发生时的经度和纬度。

问题:我想确保CSV文件中重复的信息不会被输入SQL数据库。
由于数据具有序列号、时间戳和位置,这有助于过滤重复事件。
当Python解析CSV文件时,我确实认为我可以为CSV文件中的相关信息创建一个散列,并使用它来确定正在添加的SQL数据库中是否已经存在"相同"的记录,但这可能不是很有效?
我猜另一种选择是SQL只添加不存在的信息,但我不完全确定如何做到这一点。
哪一种方法是实现这一目标的最有效方法?
我知道如何在Python中散列数据(通过将其放入元组中),并且如果散列已经存在,则不添加记录,但我不确定SQL是否已经可以为我做到这一点。

cqoc49vn

cqoc49vn1#

如果你在不同的csv文件中有一个唯一的标识符,可以帮助你过滤重复的信息,那么你就可以用这个ID创建一个表,并在你的插入查询中使用on conlict子句来避免多次插入同一行。下面是一个表的例子,当然你还需要其他列来存放剩余的数据:

CREATE TABLE data (
   id TEXT PRIMARY KEY
);

那么您可以使用这样的insert子句安全地取消重复数据:

INSERT INTO data (id)
VALUES (?)
ON CONLICT DO NOTHING

重复的数据将被忽略。
您可以阅读有关插入查询类型的sqlite文档页:https://www.sqlite.org/lang_insert.html

相关问题