我正在寻找一些关于如何使用sqlite3在Python中实现这一点的帮助
基本上,我有一个进程,下载一个数据库(temp),然后需要将它的记录插入第二个相同的数据库(主数据库)。。同时忽略/绕过任何可能的重复键错误
我考虑了两个场景,但不确定如何在Python中最好地实现这一点
选项1:
从数据库1中选择例如:
dbcur.executemany('SELECT * from table1')
rows = dbcur.fetchall()
将它们插入DB 2中:
dbcur.execute('INSERT INTO table1 VALUES (:column1, :column2)', rows)
dbcon.commit()
当然,这不起作用,因为我不确定如何正确地执行它:)
选项2(我更喜欢,但不知道如何做):
另外,我在数据库中有4个表,每个表都有不同的列,我可以跳过在INSERT语句中命名列吗?在
至于重复的密钥,我已经读到我可以使用“ON duplicate KEY”来处理 例如
INSERT INTO table1 VALUES (:column1, :column2) ON DUPLICATE KEY UPDATE set column1=column1
选项1的代码看起来正确。在
如果需要筛选以绕过重复键,请在临时表中执行insert操作,然后使用SQL命令消除重复项并将其合并到目标表中。在
您可以使用如下代码将两个数据库ATTACH连接到同一个连接:
sqlite中没有与MySQL相同的ON-DUPLICATE KEY语法。This SO question包含备选方案。在
因此,要在一个sql语句中执行大容量插入,可以使用类似
^{pr2}$请参阅this page for information about REPLACE和其他有关冲突选项的内容。在
相关问题 更多 >
编程相关推荐