首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将两个SQLDatabases与多个表组合在一起;在过程中删除重复项

将两个SQLDatabases与多个表组合在一起;在过程中删除重复项
EN

Stack Overflow用户
提问于 2016-10-04 05:31:59
回答 1查看 67关注 0票数 0

我是处理SQL数据库的新手,所以我希望您不要介意这个基本问题。

对于一个研究项目,我必须将两个具有相同结构的SQL数据库组合起来。

它们是从推文的转储中创建的,并且包含用于若干预定义类(例如推文文本、推文id、用户( id )、推文id、包含的标签等)的信息的相互引用的表。它们在某种程度上重叠,即一些推文包含在两个数据库中。

它们是用Peewee构建的,并且被限制为只包含唯一的观察结果。

我尝试使用下面的语法来组合这两个数据库,以面对可能会出现的错误消息“unique constraint failed”。

我怎么做才是最好的呢?我想最终得到一个数据库,其中包含一个独特的tweet列表。

代码语言:javascript
运行
复制
#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") 
EN

回答 1

Stack Overflow用户

发布于 2016-10-04 05:41:45

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

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

我不知道SQL lite是否支持临时表,因此可能需要创建临时表,然后将其删除,但我在mySQL中就是这样做的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39840743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档