sqlite文件 - sqlite運算




如何列出使用ATTACH打開的SQLite數據庫文件中的表? (12)

在SQLite數據庫文件中,可以使用什麼SQL來列出這些表以及這些表中的行 - 使用SQLite 3命令行工具上的ATTACH命令將其附加到SQLite數據庫文件中?


.da查看所有數據庫 - 一個名為“

這個數據庫的表格可以被看到

從sqlite_master順序中選擇不同的tbl_name 1;

附加數據庫需要在語句ATTACH中使用AS選擇的前綴,例如aa (,bb,cc ...),所以:

aa.sqlite_master順序中選擇不同的tbl_name 1;

請注意,在這裡你也可以看到視圖。 在'order'之前排除這些添加where type ='table '


.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';

使用:

import sqlite3

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


從最新版本的SQLite 3開始,您可以發出:

.fullschema

看到你所有的創建語句。


我使用這個查詢來獲取它:

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