我是处理 SQL 数据库的新手,所以我希望你不介意这个基本问题。
对于一个研究项目,我必须将两个具有相同结构的 SQL 数据库组合起来。
它们是根据推文转储创建的,并包含相互引用的表,用于获取有关多个预定义类的信息,例如推文文本、推文 ID、用户 (ID)、推文 ID、包含的主题标签等。
它们在某种程度上重叠,即一些推文包含在两个数据库中。
它们是用 Peewee 构建的,并且仅限于包含独特的观察结果。
我尝试使用以下语法组合两个数据库,以面对可能预期的错误消息“唯一约束失败”。
我该如何最好地解决这个问题?我希望最终得到一个包含唯一推文列表的数据库。
#Merging the two databases
import sqlite3
tweets=sqlite3.connect("tweets_1.db")
tweets.execute("ATTACH 'tweets_2.db' as dba")
tweets_.execute("BEGIN")
for row in tweets_.execute("SELECT * FROM dba.sqlite_master WHERE type='table'"):
combine = "INSERT INTO "+ row[1] + " SELECT * FROM dba." + row[1]
print(combine)
tweets_.execute(combine)
tweets_.commit()
tweets_.execute("detach database dba")
最佳答案
最好的选择是运行多个查询:
- 创建临时表
- 将两组数据导入其中
- 然后运行 INSERT INTO table SELECT DISTINCT(key_field) FROM temp table
我不知道 SQL lite 是否支持临时表,因此可能必须创建然后删除它,但这就是我在 mySQL 中执行此操作的方式
关于mysql - 将两个 SQL 数据库与多个表组合起来;在此过程中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840743/