gpt4 book ai didi

Sqlite 将数据库合并为一个,具有唯一值,保留外键关系

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:56 25 4
gpt4 key购买 nike

<分区>

提供了两种解决方案(请参阅底部的链接),但都无法满足我的要求:

1。给定数据库中的表(相同)结构,例如:

DB1

水果
--------------
| id | name |
--------------
| 1 | Apple |
| 2 | Lemon |
| 3 | Kiwi |
| 4 | Banana|
--------------
果汁
----------------
| 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

水果
---------------
| id | name |
---------------
| 1 | Kiwi |
| 2 | Lemon |
| 3 | Apple |
| 4 | Orange |
| 5 | Lime |
---------------
果汁
----------------
| 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 |
----------------------------

2。将它们转换成这样:

DB3

水果
|----------------|
| id | name |
|----------------|
| 1 | Kiwi |
| 2 | Lemon |
| 3 | Apple |
| 4 | Orange |
| 5 | Lime |
| 6 | Banana |
------------------
果汁
|--------------|
| id | name |
|--------------|
| 1 | Juice A |
| 2 | Juice B |
| 3 | Juice C |
| 4 | Juice D |
----------------
配方(连接表)
----------------------------
| id | juice_id | fruit_id |
----------------------------
| 1 | 1 | 3 |
| 2 | 1 | 2 |
| 3 | 2 | 3 |
| 4 | 2 | 1 |
++++++++++++++++++++++++++++
| 5 | 3 | 1 |
| 6 | 3 | 3 |
| 7 | 4 | 2 |
| 8 | 4 | 4 |
----------------------------

请注意,水果 ID 已相应更改,尽管水果 ID 已更改,但仍保留关系。 ID 是主整数自增键,Recipe 包含两个外键(加上自己的主整数自增键)。

3。只有两个建议的解决方案是:

一)

$sqlite3 database1.db '.dump' >> tmp
$sqlite3 database2.db '.dump' >> tmp
$sqlite3 database3.db '.import tmp'
$ #sometimes sqlite3 database3.db < 'tmp' instead of last row

来自 4 和类似的问题,以及:

二)

$ sqlite3 newdb
attach 'b.db' as toMerge;
BEGIN;
insert into newdb select * from toMerge.sometable;
COMMIT;

其他答案,即。 1234567 只是重复相同的模式。也许 6 可能是解决方案,但我不知道,那个查询的长度吓坏了我......

此外,正如 1 所述,没有 gui 比较和合并解决方案。至少除了 2011 sqlitecompare 之外,它可能无论如何都可以在 Windows 中运行(我正在寻找 Linux 工具)8 中的一些意见也证实几乎没有用户友好的 gui 具有合并选项。

所以,问题是。如何在 Linux 中合并 sqlite 数据库,保持关系,但不保留标签/注释中的重复值?我认为保持有组织的结构是将事物保存在数据库中的主要原因,但我似乎不明白,为什么我要把两个相同的水果放在一个篮子里,如果把两个篮子结合起来。我的篮子里应该有独特的水果和食谱,我想吃那个奇异果:)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com