如何仅复制表结构?

时间:2016-12-24 10:08:55

标签: android sqlite android-sqlite

我想创建一个数据库。它将来可能会超过9个表。但是表的结构(列数和列名)对于所有表都是相同的。我知道有一个选项可以复制表的结构并重命名并使用它,但我不知道该怎么做。请给我相关的答案,以便减少我的代码。

1 个答案:

答案 0 :(得分:0)

您可以通过PRAGMA table_info (<yourtable>)

从基表中提取列

e.g。

String sqlstr = " PRAGMA table_info (" + table_name + ")";
        Cursor csr = db.rawQuery(sqlstr, null);

生成的cusors包含列: -

cid (rowid)

名称(列名称)

输入(列类型,例如INTEGER)

notnull (0如果可以为null)

dflt_value (默认值为1)

pk (如果不是主键的一部分则为0,否则为1,2 ......如果是主键的一部分)

然后你可以从中构建SQL。

另一种方法是通过以下方式提取用于创建表的 SQL : -

SELECT sql FROM sqlite_master WHERE type='table' AND name='<yourtable>'

然后,您可以更改生成的SQL,将基表名称更改为新的表名。

第三种选择是使用类似

的内容复制表格
CREATE TABLE newtable AS SELECT * FROM basetable WHERE 0

但是,这不是结构的完整全面副本,例如未创建主键。