【发布时间】:2019-03-25 16:02:05
【问题描述】:
我有来自 2 个来源的大型数据集,一个是巨大的文本文件(作为新数据),另一个来自数据库 (MySQL)(作为历史数据)。如何比较它们以找出差异(仅获取新的和修改的记录)。我打算读取文本文件中的每一行并与 MySQL 中的数据进行比较。
文本文件(demo.txt):
0001|NAME1|A1
0002|NAME2|A2
0003|NAME3|A3
0004|NAME4|A4
0005|NAME5|A1
MySQL 中的数据:
id | name | address
----------------------------
0001 | NAME1 | A1
----------------------------
0002 | NAME2 | A2
----------------------------
0003 | NAME3 | A4
----------------------------
0004 | NAME4 | A4
----------------------------
预期结果:
0003|NAME3|A4
0005|NAME5|A1
这是我的努力:
connection = pymysql.connect(host='localhost',
user='root',
password='password',
db='test',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
cursor = connection.cursor()
myfile = open("demo.txt","r")
lines = myfile.readlines()
for line in lines:
data=line.split('|')
sql_query = """SELECT * FROM HistoricalTable WHERE id = {}""".format(data[0])
check=cursor.execute(sql_query)
result=cursor.fetchall()
if check>=1:
for i in result:
if data[0]==i['id'] and data[1]==i['name'] and data[2]==i['address']:
print("Ignore")
else:
print(line)
break
else:
print(line)
而且我知道这不是最好的方法,而且会花费很多时间!那么请问我有什么建议吗?
【问题讨论】:
-
您想如何查找重复项?通过id?按姓名?换句话说,“0001|NAME1”等于到“0001|NAME2”吗?
标签: python-3.x csv compare pymysql