您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 将同一表模式的多个备份合并到一个主表中

5b51 2022/1/14 8:23:01 python 字数 3199 阅读 591 来源 www.jb51.cc/python

我有大约200个SQLite数据库副本.所有在不同的时间采用不同的数据.删除了一些行,并添加了一些行.它们都在一个目录中. 我想使用目录中的所有.db文件合并表my_table中的所有行.我希望删除重复的行,只显示所有数据库的所有内容. 我想在纯SQL中这样做,但我不认为这是可能的,所以我们也可以使用Python. 表定义: CREATE TABLE my_table ( ROWID IN

概述

我想使用目录中的所有.db文件合并表my_table中的所有行.我希望删除重复的行,只显示所有数据库的所有内容.

我想在纯sql中这样做,但我不认为这是可能的,所以我们也可以使用Python.

表定义:

CREATE TABLE my_table (
    ROWID INTEGER PRIMARY KEY AUTOINCREMENT,guid TEXT UNIQUE NOT NULL,text TEXT,replace INTEGER DEFAULT 0,service_center TEXT,handle_id INTEGER DEFAULT 0,subject TEXT,country TEXT,attributedBody BLOB,version INTEGER DEFAULT 0,type INTEGER DEFAULT 0,service TEXT,account TEXT,account_guid TEXT,error INTEGER DEFAULT 0,date INTEGER,date_read INTEGER,date_delivered INTEGER,is_delivered INTEGER DEFAULT 0,is_finished INTEGER DEFAULT 0,is_emote INTEGER DEFAULT 0,is_from_me INTEGER DEFAULT 0,is_empty INTEGER DEFAULT 0,is_delayed INTEGER DEFAULT 0,is_auto_reply INTEGER DEFAULT 0,is_prepared INTEGER DEFAULT 0,is_read INTEGER DEFAULT 0,is_system_message INTEGER DEFAULT 0,is_sent INTEGER DEFAULT 0,has_dd_results INTEGER DEFAULT 0,is_service_message INTEGER DEFAULT 0,is_forward INTEGER DEFAULT 0,was_downgraded INTEGER DEFAULT 0,is_archive INTEGER DEFAULT 0,cache_has_attachments INTEGER DEFAULT 0,cache_roomnames TEXT,was_data_detected INTEGER DEFAULT 0,was_deduplicated INTEGER DEFAULT 0,is_audio_message INTEGER DEFAULT 0,is_played INTEGER DEFAULT 0,date_played INTEGER,item_type INTEGER DEFAULT 0,other_handle INTEGER DEFAULT -1,group_title TEXT,group_action_type INTEGER DEFAULT 0,share_status INTEGER,share_direction INTEGER,is_expirable INTEGER DEFAULT 0,expire_state INTEGER DEFAULT 0,message_action_type INTEGER DEFAULT 0,message_source INTEGER DEFAULT 0
)
ATTACH 'snapshot123.db' AS snapshot;
INSERT OR REPLACE INTO main.my_table SELECT * FROM snapshot.my_table;
DETACH snapshot;

按照从最旧到最新的顺序对所有数据库执行此操作.
(sqlite没有这种循环控制机制;在Python中执行此循环.)

或者,您可以从最新和最旧的方向向后移动,并仅插入尚不存在的行:

ATTACH 'snapshot123.db' AS snapshot;
INSERT OR IGNORE INTO main.my_table SELECT * FROM snapshot.my_table;
DETACH snapshot;

总结

以上是编程之家为你收集整理的python – 将同一表模式的多个备份合并到一个主表中全部内容,希望文章能够帮你解决python – 将同一表模式的多个备份合并到一个主表中所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶