在SQLite 3命令行工具中将其附加到命令后,可以使用哪种SQL列出表以及这些表中的行在SQLite数据库文件中?ATTACH
.tables
用于表和.schema ?TABLE?
特定表的模式。
.table 'bank_%'
或.table '%_empl'
用于查询前缀/后缀的有效语法!
在SQLite 3命令行工具中将其附加到命令后,可以使用哪种SQL列出表以及这些表中的行在SQLite数据库文件中?ATTACH
.tables
用于表和.schema ?TABLE?
特定表的模式。
.table 'bank_%'
或.table '%_empl'
用于查询前缀/后缀的有效语法!
Answers:
在.tables
和.schema
“辅助”功能不考虑附加的数据库:他们只是查询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';
"SELECT name FROM sqlite_master WHERE type='table'"
对我
CREATE TEMPORARY TABLE
SQL命令创建的表。当当前数据库连接关闭时,它们的内容将被删除,并且它们永远不会保存到数据库文件中。
ATTACH "some_file.db" AS my_db;
!
有一些步骤可以查看SQLite数据库中的表:
列出数据库中的表:
.tables
列出表格的外观:
.schema tablename
打印整个表:
SELECT * FROM tablename;
列出所有可用的SQLite提示命令:
.help
.table
并且.tables
都被允许。对于这个问题,.ta
将工作为好,因为sqlite3的接受是明确的任何命令。根据帮助的命令名称的确是“ .tables”(如果有人还在注意的话)。
.tables
如果一个打开的数据库通过,则不会显示表,ATTACH '<path>' AS <name>;
但是lasse的答案会显示。既然OP提到了ATTACHing,我相信他不接受这个答案是正确的。编辑:只是注意到下面的安东尼和其他人也指出了这一点。
看来您需要浏览sqlite_master表,如下所示:
SELECT * FROM dbname.sqlite_master WHERE type='table';
然后使用SELECT
或类似符号手动浏览每个表以查看行。
在.DUMP
与.SCHEMA
命令不会出现看到数据库的。
.tables
已修改为显示来自附加数据库的表?
.tables
已修改命令以显示这些命令?
要显示所有表格,请使用
SELECT name FROM sqlite_master WHERE type = "table"
要显示所有行,我想您可以遍历所有表,并对每个表执行SELECT *。但是也许您想要的是DUMP?
要列出表,您还可以执行以下操作:
SELECT name FROM sqlite_master
WHERE type='table';
cur.execute(""" SELECT name FROM sqlite_master WHERE type='table';""")
还是没有?这对我不起作用,但是我不确定该代码应在哪里运行。
尝试PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema
根据文档,相当于MySQLs 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答案。
采用:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
由于没有人提到SQLite的官方参考,因此我认为在此标题下引用它可能会很有用:
https://www.sqlite.org/cli.html
您可以使用此链接中描述的命令来操作数据库。此外,如果您使用的是Windows OS,但不知道命令外壳在哪里,则位于SQLite的站点中:
https://www.sqlite.org/download.html
下载后,单击sqlite3.exe文件初始化SQLite命令外壳程序。初始化后,默认情况下,此SQLite会话使用内存数据库,而不是磁盘上的文件,因此当会话退出时,所有更改都将丢失。要将永久磁盘文件用作数据库,请在终端窗口启动后立即输入“ .open ex1.db”命令。
上面的示例导致打开和使用名为“ ex1.db”的数据库文件,并在以前不存在的情况下创建该文件。您可能希望使用完整路径名来确保文件位于您认为它所在的目录中。使用正斜杠作为目录分隔符。换句话说,使用“ c:/work/ex1.db”,而不是“ c:\ work \ ex1.db”。
要查看您先前选择的数据库中的所有表,请按上述链接中的命令键入.tables命令。
如果您使用Windows,我认为将此sqlite.exe文件与其他Python文件移动到同一文件夹可能会很有用。这样,Python文件将写入到同一目录中,而SQLite shell从.db文件中读取的则在同一路径中。
“ .schema”突击队将通过显示用于创建所述表的语句来列出可用表及其行:
sqlite>创建table_a(id int,a int,b int); sqlite> .schema table_a 创建表table_a(id int,a int,b int);