如何列出使用ATTACH打开的SQLite数据库文件中的表?
时间:2020-03-05 18:58:47 来源:igfitidea点击:
一旦在SQLite 3命令行工具上使用" ATTACH"命令将其添加到SQLite数据库文件后,可以使用哪种SQL列出表以及这些表中的行?
解决方案
回答
看来我们需要浏览sqlite_master表,如下所示:
SELECT * FROM dbname.sqlite_master WHERE type='table';
然后使用" SELECT"或者类似选项手动浏览每个表以查看行。
.DUMP和.SCHEMA命令似乎根本看不到数据库。
回答
有一些步骤可以查看SQLite数据库中的表:
- 列出数据库中的表:
.tables
- 列出表格的外观:
.schema tablename
- 打印整个表:
SELECT * FROM tablename;
- 列出所有可用的SQLite提示命令:
.help
回答
要列出表,我们还可以执行以下操作:
SELECT name FROM sqlite_master WHERE type='table';
回答
" .schema"突击队将通过显示用于创建所述表的语句来列出可用表及其行:
sqlite> create table_a (id int, a int, b int); sqlite> .schema table_a CREATE TABLE table_a (id int, a int, b int);
回答
要显示所有表格,请使用
SELECT name FROM sqlite_master WHERE type = "table"
要显示所有行,我想我们可以遍历所有表,并对每个表执行SELECT *。但是也许我们想要的是DUMP?
回答
SQLite命令行上有一个可用的命令:
.tables ?PATTERN? List names of tables matching a LIKE pattern
转换为以下SQL:
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
回答
.tables和.schema" helper"函数不会查看已连接的数据库:它们只是在SQLITE_MASTER表中查询" main"数据库。因此,如果我们使用
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';
回答
最简单的方法是直接打开数据库并使用.dump
命令,而不是在调用SQLite3 Shell工具后添加数据库。
因此...(假设OS命令行提示符为$)而不是$ sqlite3
:
sqlite3> ATTACH database.sqlite as "attached"
在OS命令行中,直接打开数据库:
$sqlite3 database.sqlite sqlite3> .dump
回答
尝试PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema