sqlite查看表结构




如何列出使用ATTACH打开的SQLite数据库文件中的表? (12)

.da查看所有数据库 - 一个名为“

这个数据库的表格可以被看到

从sqlite_master顺序中选择不同的tbl_name 1;

附加数据库需要在语句ATTACH中使用AS选择的前缀,例如aa (,bb,cc ...),所以:

aa.sqlite_master顺序中选择不同的tbl_name 1;

请注意,在这里你也可以看到视图。 在'order'之前排除这些添加where type ='table '

在SQLite数据库文件中,可以使用什么SQL来列出这些表以及这些表中的行 - 使用SQLite 3命令行工具上的ATTACH命令将其附加到SQLite数据库文件中?


.tables和.schema “helper”函数不会查看ATTACHed数据库:它们只是在SQLITE_MASTER表中查询“主”数据库。 因此,如果你使用了

ATTACH some_file.db AS my_db;

那么你需要做的

SELECT name FROM my_db.sqlite_master WHERE type='table';

请注意,临时表不会显示.tables :您必须列出sqlite_temp_master

SELECT name FROM sqlite_temp_master WHERE type='table';

使用.help来检查可用的命令。

.table

该命令将显示当前数据库下的所有表。


使用:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"


我使用这个查询来获取它:

SELECT name FROM sqlite_master WHERE type='table'

并在iOS中使用:

NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];

有几个步骤可以查看SQLite数据库中的表:

  1. 列出数据库中的表格:

    .tables
    
  2. 列出表格的外观:

    .schema tablename
    
  3. 打印整个表格:

    SELECT * FROM tablename;
    
  4. 列出所有可用的SQLite提示命令:

    .help
    

根据这份documentation ,MySQL的SHOW TABLES; TABLE相当于SHOW TABLES; 是:

“.tables”命令与设置列表模式类似,然后执行以下查询:

SELECT name FROM sqlite_master
  WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
  WHERE type IN ('table','view')
ORDER BY 1;

但是,如果您检查是否存在单个表(或获取其详细信息),请参阅@LuizGeron答案。


看起来你需要通过sqlite_master表,如下所示:

SELECT * FROM dbname.sqlite_master WHERE type='table';

然后用SELECT或类似的手段遍历每个表格以查看行。

.DUMP.SCHEMA命令根本看不到数据库。


要列出表格,您还可以执行以下操作:

SELECT name FROM sqlite_master
WHERE type='table';

通过union all ,将所有表格合并成一个清单。

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'

通过向您显示用于创建所述表的语句,“.schema”commando将列出可用表及其行。

sqlite> create table_a (id int, a int, b int);
sqlite> .schema table_a
CREATE TABLE table_a (id int, a int, b int);




metadata