怎么枚举sqlite中的所有表及其字段?
如何枚举sqlite中的所有表及其字段??
我有一份sqlite数据库文件,但不知道里面的表名,如何枚举出所有的表名以及其字段名??
关键是sqlite的sql语句如何写?我试了一些sql语句不行,特来求助。
------解决方案--------------------
sqlite> .tables
MailLabel numtable t1 test
sqlite>
我有一份sqlite数据库文件,但不知道里面的表名,如何枚举出所有的表名以及其字段名??
关键是sqlite的sql语句如何写?我试了一些sql语句不行,特来求助。
------解决方案--------------------
sqlite> .tables
MailLabel numtable t1 test
sqlite>
- SQL code
sqlite> .help .backup ?DB? FILE Backup DB (default "main") to FILE .bail ON|OFF Stop after hitting an error. Default OFF .databases List names and files of attached databases .dump ?TABLE? ... Dump the database in an SQL text format .echo ON|OFF Turn command echo on or off .exit Exit this program .explain ON|OFF Turn output mode suitable for EXPLAIN on or off. .genfkey ?OPTIONS? Options are: --no-drop: Do not drop old fkey triggers. --ignore-errors: Ignore tables with fkey errors --exec: Execute generated SQL immediately See file tool/genfkey.README in the source distribution for further information. .header(s) ON|OFF Turn display of headers on or off .help Show this message .import FILE TABLE Import data from FILE into TABLE .indices TABLE Show names of all indices on TABLE .load FILE ?ENTRY? Load an extension library .mode MODE ?TABLE? Set output mode where MODE is one of: csv Comma-separated values column Left-aligned columns. (See .width) html HTML <table> code insert SQL insert statements for TABLE line One value per line list Values delimited by .separator string tabs Tab-separated values tcl TCL list elements .nullvalue STRING Print STRING in place of NULL values .output FILENAME Send output to FILENAME .output stdout Send output to the screen .prompt MAIN CONTINUE Replace the standard prompts .quit Exit this program .read FILENAME Execute SQL in FILENAME .restore ?DB? FILE Restore content of DB (default "main") from FILE .schema ?TABLE? Show the CREATE statements .separator STRING Change separator used by output mode and .import .show Show the current values for various settings .tables ?PATTERN? List names of tables matching a LIKE pattern .timeout MS Try opening locked tables for MS milliseconds .width NUM NUM ... Set column widths for "column" mode sqlite>
------解决方案--------------------
如果在程序中你可以通过 sqlite_master 表得到所有表的信息。
- SQL code
sqlite> select type, name, tbl_name from sqlite_master order by type; type|name|tbl_name index|sqlite_autoindex_t1_1|t1 index|sqlite_autoindex_numtable_1|numtable table|t1|t1 table|numtable|numtable table|test|test table|sqlite_stat1|sqlite_stat1 table|MailLabel|MailLabel sqlite>
------解决方案--------------------
在SQLITE中可以通过
select * from sqlite_master
得到所有表名及建表SQL
如果在语言环境中可以通过ADO、ADOX得到所有字段名、表名
------解决方案--------------------
vba示例:
Dim cn As New ADODB.Connection
Dim ff1 As New ADOX.Catalog
Dim ff2 As New ADOX.Table
Dim ff3 As New ADOX.Column
ff = "DRIVER={SQLite3 ODBC Driver};Database=j:\temp\dd"
cn.Open ff
Set ff1.ActiveConnection = cn
For Each ff2 In ff1.Tables
If ff2.Type = "TABLE" Then
For Each ff3 In ff2.Columns
MsgBox ff2.Name & ff3.Name & ff3.Type
Next
End If
Next
------解决方案--------------------