合并两个都有联结表的 SQLite 数据库

2023-12-01

我有两个 SQLite 数据库,它们都有连接表来描述一对多关系。现在,这两个数据库需要通过某种导入/导出机制合并为一个数据库,并仍然保留关系。

我试图转储DB2 with .dump然后将其加载回DB1 with .read,但总是得到PRIMARY KEY must be unique警告。

有没有最佳实践来处理这种情况?

最好不要使用attach以避免额外的复杂性。


DB1

Fruit



--------------
| id | name  |
--------------
| 1  | Apple |
| 2  | Lemon |
| 3  | Kiwi  |
--------------
  

Juice



----------------
| id | name    |
----------------
| 1  | Juice A |
| 2  | Juice B |
----------------
  

配方(接线表)



----------------------------
| id | juice_id | fruit_id |
----------------------------
| 1  | 1        | 1        |
| 2  | 1        | 2        |
| 3  | 2        | 1        |
| 4  | 2        | 3        |
----------------------------
  

DB2

Fruit



---------------
| id | name   |
---------------
| 1  | Kiwi   |
| 2  | Lemon  |
| 3  | Apple  |
| 4  | Orange |
---------------
  

Juice



----------------
| id | name    |
----------------
| 1  | Juice C |
| 2  | Juice D |
----------------
  

配方(接线表)



----------------------------
| id | juice_id | fruit_id |
----------------------------
| 1  | 1        | 1        |
| 2  | 1        | 3        |
| 3  | 2        | 2        |
| 4  | 2        | 4        |
----------------------------
  

如果您不关心重复项,您可以从 DB1 获取最大 ID,并将其添加到 DB2 中的每个 ID。 然而,你说name可能是独一无二的,所以让我们正确地做这件事。

我假设所有id列是INTEGER PRIMARY KEY,即自动递增。

打开 DB1,并附加 DB2:

ATTACH '...' AS db2;

复制 DB1 中尚不存在的所有水果和果汁(这些会获得新的 ID):

INSERT INTO Fruit(name)
SELECT name
FROM db2.Fruit
WHERE name NOT IN (SELECT name
                   FROM Fruit);
INSERT INTO Juice(name)
SELECT name
FROM db2.Juice
WHERE name NOT IN (SELECT name
                   FROM Juice);

现在复制食谱,同时通过相应的名称查找新的 ID 值:

INSERT INTO Recipe(juice_id, fruit_id)
SELECT (SELECT id
        FROM Juice
        WHERE name = (SELECT name
                      FROM db2.Juice
                      WHERE id = Recipe2.juice_id)),
       (SELECT id
        FROM Fruit
        WHERE name = (SELECT name
                      FROM db2.Fruit
                      WHERE id = Recipe2.fruit_id))
FROM db2.Recipe AS Recipe2;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并两个都有联结表的 SQLite 数据库 的相关文章

  • 如何在 SQL 中进行广度优先搜索?

    给定一棵存储为关系的树 Parent Child 1 2 1 3 3 4 3 5 2 6 7 8 7 9 如何获取给定节点的所有后代 例如 对于 1
  • ADO.NET 池连接无法重用

    我正在开发一个 ASP NET MVC 应用程序 该应用程序使用 EF 6 x 来处理我的 Azure SDL 数据库 最近 随着负载的增加 应用程序开始进入无法再与 SQL 服务器通信的状态 我可以看到有 100 个到我的数据库的活动连接
  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • 我想从 Crystal Report .rpt 文件中提取 SQL 查询,有办法做到这一点吗?

    我想从 Crystal Report rpt 文件中提取 SQL 查询 有办法做到这一点吗 我没有任何 Crystal Reports 产品 只有 rpt 文件 下面是一个 Net 代码示例 它从给定目录中的所有 Crystal Repor
  • 如何使用 Alter Table 在 Access 中创建小数字段?

    我想以编程方式在 MS Access 表中创建一个新列 我尝试过很多排列ALTER TABLE MyTable Add MyField DECIMAL 9 4 NULL 并得到 字段定义中的语法错误 我可以轻松创建一个数字字段Double类
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • 如何查找所有mysql表之间的所有关系?

    如何找到MySQL所有表之间的所有关系 例如 如果我想知道大约有 100 个表的数据库中表的关系 有什么办法知道这个吗 从编程角度来说 更好的方法是从以下位置收集数据 INFORMATION SCHEMA KEY COLUMN USAGE表
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • 如何在oracle中获取表作为输出参数

    我正在尝试将 Oracle 过程调用的 out 参数强制转换为对象 它不起作用 因为 据我了解 我需要定义一个映射 它告诉方法如何转换它 如果地图为空或未正确填充 则它默认为 STRUCT 类型的对象 在我的情况下这是错误的 我已经构建了一
  • oracle lag 函数与 group by

    我有一个查询忽略从前一个值增加的值 例如 采用下表 col1 col2 col3 5 1 A 4 2 A 6 3 A 9 4 B 8 5 B 10 6 B 现在进行以下查询 select col1 from select col1 lag
  • C# 查询两个数据库的数据

    我目前有一个查询 我正在从两个不同的数据库获取数据 这些数据被附加到一个名为 accountbuys 的列表中 我的第一个表有三个数据条目 3个想要购买股票的帐户 下一张表有 17 个数据点 购买 17 只股票 I am merging t
  • 如何将变量设置为触发器 MYSQL 内存储过程的结果?

    我这里有一个小问题 我正在为我的数据库工作创建一个触发器 但我不知道如何在触发器内使用存储过程 我想将过程的结果保存在变量中 然后使用稍后在 IF 比较器上变量 这是我的代码 DELIMITER CREATE TRIGGER insert
  • 尚未为此带有 SQL Server 的 DbContext .NET Core 配置数据库提供程序

    我一直用这个把头撞在墙上 并且一直在谷歌上搜索无济于事 我刚刚开始一个新的 ASP NET Core MVC 项目 我已将这两个包安装 更新为 2 2 0 Microsoft EntityFrameworkCore SqlServer Mi
  • 调整 Oracle 数据库以加快启动速度(闪回)

    我正在使用 Oracle 数据库 11 2 我有一个场景 我发出FLASHBACK DATABASE经常 似乎有一个FLASHBACK DATABASECycle 会重新启动数据库实例 大约需要 1 分钟 我的设置花了 7 秒 数据库很小
  • Android 上的 SQLite JDBC 驱动程序

    我正在尝试使用xerial sqlite jdbc在 Android 中管理我的数据库没有成功 我得到了java lang NoClassDefFoundError org sqlite SQLiteConnection异常 我已经导入了这
  • 常量值如何影响连接的 ON 子句?

    我最近发现 LEFT JOIN 的 ON 子句可能包含 1 1 等值 这让我感到不安 因为它打破了我对连接功能的看法 我遇到过以下情况的更详细版本 SELECT DISTINCT Person ID FROM Person LEFT JOI
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • SQL Server查询麻烦,多对多关系

    不知道如何用一行字来表达这个问题 对标题表示歉意 我的数据库中有3个表 例如 Shop Item 商店库存 Shop 和 Item 具有多对多关系 因此 ShopStock 表将它们链接起来 ShopStock 中的字段是 ID ShopI
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可

随机推荐

  • 如何实现像uber android一样的可拖动地图,随位置变化而更新

    如何实现像uber一样的可拖动地图 我正在使用谷歌地图 v2 实际上我得到了解决方案这个帖子并在这里分享我的完整解决方案 使用最新代码进行更新还包括使用自动完成功能更改位置 完整的项目可以找到here 逻辑很简单我们需要一个framelay
  • 从文件将用户导入 ASP.NET 成员身份

    我有一个使用 ASP NET 会员资格的网站 我还有一个 Excel 文件 其中包含大约 60 条用户记录 如何将记录导入到成员资格数据库中 而无需在 ASP NET 网站管理工具中键入全部 60 条记录 谢谢 foreach record
  • 使用 App Inventor 2 过滤 url JSON 结果

    我正在尝试使用 App Inventor 2 过滤 JSON url 结果 遵循以下示例代码here1 and here2 但我仍然无法正确完成它 我一次只能得到一个结果 JSON结果为如下图所示形式的数据 field1 alphaNume
  • Z-index 没有覆盖 DOM 中更下方的 div

    我正在尝试创建一个类似工具提示的系统 其中 mouseenter 事件会导致显示一个 div 该 div 将覆盖内容 不幸的是我遇到的问题是内容laterDOM 中的内容在 IE7 中并没有消失 而之前的内容在 z 索引元素后面正确消失 这
  • 查找具有特定字符串的 svn:external 属性的路径?

    我有一个非常大的 Subversion 存储库 大小约为 7 GB 包含来自不同项目的许多文件和目录 现在我对一个项目结构做了一些重大更改 它实际上是一个库 并且我在同一存储库中的很多其他项目中使用它 现在文档很少 我不知道哪个项目实际上真
  • 如何在 REST Assured 中传递默认解析器?

    我正在尝试使用 REST Assured 自动化 API 以下是我在执行 API 测试用例期间遇到的错误 testNotifications com api truValue test notifications Notifications
  • opencv如何在光流后跟踪物体?

    对视频进行光流 lk 后 根据此数据查找对象并跟踪它们的最佳方法是什么 这可能听起来很菜鸟 但我希望能够在物体周围定义清晰的轮廓 所以如果它是一个形状奇怪的瓶子或其他东西 就能够检测边缘 我不确定 LK 是最好的算法 因为它计算一组稀疏的角
  • FCM - 重新调试应用程序后发送消息时出现 Android Xamarin NotRegistered 错误

    我正在 Xamarin Android 中开发一个应用程序 对于通知 我使用 FCM 预发布包 https www nuget org packages Xamarin Firebase Messaging 现在 如果我清理应用程序数据 一
  • 如何将相似名称的文件复制到文件夹中?

    我正在创建一个归档系统 需要将文件分类到文件夹中 我通过在 Excel 工作表中提及文件夹名称来自动创建文件夹 现在我需要复制相应文件夹中具有相似名称的文件 例如 将创建一个名为 Ashley Davidson 的文件夹 一个源文件夹中且文
  • 如何为 php Web 应用程序管理不同国家/地区的不同用户的时区?

    我正在开发网络应用程序 该应用程序有来自不同国家的不同用户 我曾经使用 UTC 时间戳来管理他们的注册 这对我来说可以 但是当我检查帐户的到期日期时出现问题 例如 假设注册有效期为 15 天 来自印度的用户 其注册日期为亚洲 加尔各答时区的
  • html lang 属性的 html 验证错误

    我收到此错误消息 该文档似乎是 Lorem ipsum 文本 但 html 开始标记有 lang en 考虑使用 lang zxx 或变体 从第 5 行第 32 列开始 至第 5 行 第 47 列 html lang en 如需进一步指导
  • Magento simplexml_load_string()错误位置

    我有一个非常烦人的问题 当我对 Magento 商店进行一些修改时 我遇到了 simplexml load string 错误 我很清楚这个错误是由一些错误的 XML 文件引起的 但对我来说非常重要的问题是哪个文件以及它位于哪里 这是我收到
  • 使用RxJava 2和Retrofit 2,适配器版本问题

    我在 Android Studio 中的现有应用程序模块中添加了一个新的库模块 主要区别是添加了 RxJava 2 和 Retrofit 2 更新新模块的 build gradle 后 我开始收到下一个错误 错误 任务 app transf
  • 对象数组中属性值的递归数组

    我需要的是一个属性值数组 从对象数组中递归收集 这就是我的意思 const regions name Europe subRegions name BeNeLux territories code NL name Netherlands c
  • 如何在 Fortran 中正确地终结对象?

    我有一个解析文本文件的对象 这是我的主要程序 program main use Parser class implicit none type Parser Parser call Parser ProcessFile data txt c
  • 如何在应用程序中获取 Dart 和 Flutter 版本

    How to log 的版本Dart and Flutter在应用程序内 like String dartVersion log dart dartVersion 要执行 dart 版本 您可以使用 Platform 类直接返回 dart
  • 如何在GWT页面中显示java小程序?

    我可能在这里遗漏了一些简单的东西 但我在其他地方找不到答案 我只想在我的 GWT 代码中显示一个小程序 操作系统 Windows XP Java JDK 1 6 0 10 其他 GWT GWT Ext 2 0 5 这是小程序 显然是为了测试
  • 我正在尝试使用命令 sudo npm install --g expo-cli 请注意我尝试 --force 全局重新安装 expo-cli 软件包

    bosshoc MBP de BOSS meals app sudo npm install g expo cli Password npm ERR code ENOTEMPTY npm ERR syscall rename npm ERR
  • Android WebView - 拦截点击

    我编写了一个带有 WebView 的简单 helloworld 应用程序 该应用程序在我的 asset 文件夹中的 simple html 页面上有 CNN 的链接 a href http cnn com cnn com a 如何捕获对我的
  • 合并两个都有联结表的 SQLite 数据库

    我有两个 SQLite 数据库 它们都有连接表来描述一对多关系 现在 这两个数据库需要通过某种导入 导出机制合并为一个数据库 并仍然保留关系 我试图转储DB2 with dump然后将其加载回DB1 with read 但总是得到PRIMA