将sqlite数据库文件(每个文件多个表)组合到一个文件中

时间:2012-09-07 02:57:26

标签: python sqlite

我在python中使用sqlite3,我有多个数据库文件,我现在要将它们组合成一个大文件。每个数据库都与特定主题相关联,但它们都共享相同的结构。我将分别查询它们 - 我只想将它们组合成一个文件,以便更容易移动它们。

我能想到的一种肮脏方式是这样的:

create_string = 'CREATE TABLE %s_table1 (id INTEGER PRIMARY KEY, doca INTEGER, docb INTEGER)' %topic1 
cur.execute(create_string)

这样,我将以每个表为前缀的主题名称,当我进行查询时,我将不得不构造一个具有相应主题名称的查询字符串。但应该有更好的方法来解决这个问题。我错过了一些明显的东西吗?

How to Merge Multiple Database files in SQLite?

How can I merge many SQLite databases?

我已经看过这些了,似乎我的问题比他们的问题更容易解决,但我仍然找不到更好的解决方案。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果你想移动整个表(例如,不合并它们但是从不同的文件中引入表),你可以在unix中这样做:

 sqlite3 'from_this_db.db' '.dump' | sqlite3 -batch 'to_this_db.db'

答案 1 :(得分:0)

我认为你的解决方案还可以。请注意,您可以将“source”光标作为“destination”光标 executemany 方法的输入。类似的东西:

src.execute('SELECT * FROM ...')
dest.executemany('INSERT INTO ...', src)