相关疑难解决方法(0)

如何合并许多SQLite数据库?

如果我有大量的SQLite数据库,都具有相同的模式,那么将它们合并在一起以便对所有数据库执行查询的最佳方法是什么?

我知道可以使用ATTACH来执行此操作,但它具有32和64个数据库的限制,具体取决于计算机上的内存系统.

database sqlite

64
推荐指数
5
解决办法
7万
查看次数

将SQLite文件合并到一个db文件中,然后"开始/提交"问题

这篇文章引用了这个用于合并SQLite数据库的页面.

顺序如下.假设我要合并a.db和b.db. 在命令行中,我执行以下操作.

  • sqlite3 a.db
  • 将'b.db'附加到M;
  • 开始; < -
  • 插入基准select*from toM.benchmark;
  • 承诺; < -
  • 分离数据库toM;

它运作良好,但在引用的网站中,提问者询问加速,答案是使用'begin'和'commit'命令.

然后,我想出了以下python代码来完成同样的事情.我用SQLiteDB抽象SQLite函数调用,其中一个方法是runCommand().即使我删除了self.connector.commit(),我也得到了同样的错误.

# run command
def runCommand(self, command):
    self.cursor.execute(command)
    self.connector.commit() # same error even though I delete this line

db = SQLiteDB('a.db')
cmd = "attach \"%s\" as toMerge" % "b.db"
print cmd
db.runCommand(cmd)
cmd = "begin"
db.runCommand(cmd)
cmd = "insert into benchmark select * from toMerge.benchmark"
db.runCommand(cmd)
cmd = "commit"
db.runCommand(cmd)
cmd = "detach database toMerge"
db.runCommand(cmd)
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误.

OperationalError: cannot commit - …
Run Code Online (Sandbox Code Playgroud)

python sqlite merge

5
推荐指数
1
解决办法
1万
查看次数

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

提供了两种解决方案(请参阅底部的链接),但都在我尝试执行的操作中失败:

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

数据库1

水果
--------------
| id | name  |
--------------
| 1  | Apple |
| 2  | Lemon |
| 3  | Kiwi  |
| 4  | Banana|
--------------
Run Code Online (Sandbox Code Playgroud) 果汁
----------------
| id | name    |
----------------
| 1  | Juice A |
| 2  | Juice B |
----------------
Run Code Online (Sandbox Code Playgroud) 配方(接线台)
----------------------------
| id | juice_id | fruit_id |
----------------------------
| 1  | 1        | 1        |
| 2  | 1        | 2        |
| 3  | …
Run Code Online (Sandbox Code Playgroud)

sql database sqlite merge

4
推荐指数
1
解决办法
1万
查看次数

如何在SQLite中合并多个数据库文件?

我有多个数据库文件,它们存在于多个位置,结构完全相同.我理解attach函数可以用于将多个文件连接到一个数据库连接,但是,它将它们视为单独的数据库.我想做的事情如下:

SELECT uid, name FROM ALL_DATABASES.Users;
Run Code Online (Sandbox Code Playgroud)

也,

SELECT uid, name FROM DB1.Users UNION SELECT uid, name FROM DB2.Users ;
Run Code Online (Sandbox Code Playgroud)

不是一个有效的答案,因为我需要合并任意数量的数据库文件.最后,数据库文件必须保持独立.有谁知道怎么做到这一点?

编辑:一个答案给了我一个想法:是否可以创建一个视图,它是所有不同表的组合?是否可以查询所有数据库文件以及它们"挂载"的数据库,然后在视图查询中使用它来创建"主表"?

sql sqlite multiple-databases

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

sqlite ×4

database ×2

merge ×2

sql ×2

multiple-databases ×1

python ×1