如何列出使用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