有没有办法检查丢失的数据并将其加载到 SQL?
Is there a way to check and load missing data to SQL?
我正在尝试找出一种方法来检查我从数据帧加载到 SQL table 中的数据,这样我就可以加载丢失的数据并避免加载重复数据。
这是一个非常粗略的想法。
sql_data = []
data = [(2020-01-01, Monday, 20, 0.1), (2020-01-02, Tuesday, 12, 0.4), (2020-01-01, Wednesday, 26, 0.3)]
cursor.execute('''Select * FROM Table ''')
for row in cursor.fetchall():
sql_data.append(row)
if data in sql_data:
pass
else:
query = '''INSERT INTO Table (Time, Day, Number, Decimal)
VALUES (?, ?, ?, ?)'''
cursor.execute(query, data)
conn.commit()
考虑很少使用的 EXCEPT
子句(UNION
和 INTERSECT
集合运算符系列的一部分),因为 SQL 服务器支持 SELECT
中的标量值,无需FROM
数据来源:
query = '''INSERT INTO Table (Time, Day, Number, Decimal)
SELECT ?, ?, ?, ?
EXCEPT
SELECT Time, Day, Number, Decimal
FROM Table
'''
cursor.executemany(query, data)
conn.commit()
我正在尝试找出一种方法来检查我从数据帧加载到 SQL table 中的数据,这样我就可以加载丢失的数据并避免加载重复数据。
这是一个非常粗略的想法。
sql_data = []
data = [(2020-01-01, Monday, 20, 0.1), (2020-01-02, Tuesday, 12, 0.4), (2020-01-01, Wednesday, 26, 0.3)]
cursor.execute('''Select * FROM Table ''')
for row in cursor.fetchall():
sql_data.append(row)
if data in sql_data:
pass
else:
query = '''INSERT INTO Table (Time, Day, Number, Decimal)
VALUES (?, ?, ?, ?)'''
cursor.execute(query, data)
conn.commit()
考虑很少使用的 EXCEPT
子句(UNION
和 INTERSECT
集合运算符系列的一部分),因为 SQL 服务器支持 SELECT
中的标量值,无需FROM
数据来源:
query = '''INSERT INTO Table (Time, Day, Number, Decimal)
SELECT ?, ?, ?, ?
EXCEPT
SELECT Time, Day, Number, Decimal
FROM Table
'''
cursor.executemany(query, data)
conn.commit()