如何无需重复编写表结构在两个SQLite数据库中创建相同表?
在SQLite中为两个数据库创建同结构表的方案
SQLite并不支持你示例中那种一次性为多个数据库创建表的语法,不过可以通过以下方法避免重复编写表结构:
方法1:使用ATTACH DATABASE + CREATE TABLE ... LIKE
这种方法会先在一个数据库中创建表,再通过LIKE语句完整复制表结构(包括字段、主键、唯一约束等)到另一个数据库的表。
编写.sql文件内容如下:
-- 附加第二个数据库到当前连接(db2的文件路径按需调整) ATTACH DATABASE 'db2.db' AS db2; -- 编写一次表结构,创建第一个库的表 CREATE TABLE IF NOT EXISTS db1.publications ( id TEXT PRIMARY KEY, content TEXT, publish_date DATETIME, author TEXT -- 其他字段按需添加 ); -- 复制完整结构到第二个库的表 CREATE TABLE IF NOT EXISTS db2.publications LIKE db1.publications;
执行该文件时,确保当前连接的是db1(或任意一个数据库,再附加另一个即可)。
方法2:使用ATTACH DATABASE + CREATE TABLE ... AS SELECT
如果仅需要复制字段结构(无需约束),可以用这种方式生成空表:
ATTACH DATABASE 'db2.db' AS db2; CREATE TABLE IF NOT EXISTS db1.publications ( id TEXT PRIMARY KEY, content TEXT, publish_date DATETIME, author TEXT ); -- 创建空表,仅复制字段结构 CREATE TABLE IF NOT EXISTS db2.publications AS SELECT * FROM db1.publications WHERE 1 = 0;
注意:此方式不会复制主键、唯一约束等规则,需完整表结构时优先选方法1。
内容的提问来源于stack exchange,提问作者charnould
相关产品推荐
相关产品推荐

