mysql - 将两个 SQL 数据库与多个表组合起来;在此过程中删除重复项

标签 mysql merge peewee

我是处理 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") 

最佳答案

最好的选择是运行多个查询:

  1. 创建临时表
  2. 将两组数据导入其中
  3. 然后运行 ​​INSERT INTO table SELECT DISTINCT(key_field) FROM temp table

我不知道 SQL lite 是否支持临时表,因此可能必须创建然后删除它,但这就是我在 mySQL 中执行此操作的方式

关于mysql - 将两个 SQL 数据库与多个表组合起来;在此过程中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840743/

相关文章:

python - 皮威 ORM : how to efficiently iterate over a large resultset

用于查找以空格分隔的数字 0 的 Mysql 正则表达式

python - 在查询字典中包含连接的表列

python - 使用 peewee 复制对象实例并插入到数据库会创建重复的 ID

Git "manual merge"策略

PHP:将完整数组与空数组合并还是先检查 isset()?

c# - 我如何从另一个可枚举的 c# 中插入一个可枚举的

javascript - 该函数是否应该在服务器上异步运行

mysql - 从多对多关系中选择 Sequelize

php - 检查IP地址是否存储在数据库中