sqlite3命令详解(中)

文章参照:www.sqlite.org/sqlite.html
在sqlite3中我们可以通过".help"命令来查所有的非SQL命令。
比如,示例4
sqlite>  .help
.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
                                   If TABLE specified, only dump tables matching
                                   LIKE pattern TABLE.
.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.
                                    With no args, it turns EXPLAIN on.
.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
                                     If TABLE specified, only show indices for tables
                                       matching LIKE pattern TABLE.
. load FILE ?ENTRY?     Load an extension library
.log FILE|off                  Turn logging on or off.  FILE can be stderr/stdout
.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
                                        If TABLE specified, only show tables matching
                                          LIKE pattern TABLE.
.separator STRING       Change separator used by output mode and .import
.show                           Show the current values for various settings
.tables ?TABLE?          List names of tables
                                  If TABLE specified, only list tables matching
                                   LIKE pattern TABLE.
.timeout MS                Try opening locked tables for MS milliseconds
.width NUM1 NUM2 ...    Set column widths for "column" mode
.timer ON|OFF              Turn the CPU timer measurement on or off
sqlite>
sqlite3能以8种不同的方式显示查询返回的结果: " csv " , " column ", " html ", " insert ", " line ", " list "," tabs ",  " tcl ".
你可以通过.mode来设置显示的方式。默认的是"list"方式,这时返回结果的一条记录显示一行,每列的内容之间用设定的分隔符隔开,
默认的分隔符是"|".
示例5
sqlite>  .mode list
sqlite>  select * from tbl1;
hello|10
goodbye|20
sqlite>
你可以通过".separator"来设置"list"模式下的分隔符。比如我们想把", "作为分隔符,可以这样:
示例6
sqlite>  .separator ", "
sqlite>  select * from tbl1;
hello, 10
goodbye, 20
sqlite>
"line"模式下, 每行只显示数据库的一行的一列。每行由列名,等号和列的值组成。每条记录之间由一个空行隔开。
比如,示例7
sqlite> .mode line
sqlite>  select * from tbl1;
one = hello
two = 10

one = goodbye
two = 20
sqlite>
"column"模式下,每条记录都在单独一行显示。第一行显示的是列名,第二行只是用于分割列名和记录的数据,第三行开始才是记录的内容
比如, 示例8:
sqlite> .mode column
sqlite>  select * from tbl1;
one         two       
----------  ----------
hello       10        
goodbye     20        
sqlite>
默认情况下,每列的宽度最多只能显示10个字符。所以如果数据包含的字符如果他太多,可能就显示不完。
但是 我们可以通过".width"设置每列的宽度
比如, 示例9:
sqlite>  .width 12 6
sqlite>  select * from tbl1;
one           two   
------------  ------
hello         10    
goodbye       20    
sqlite>
示例9就把第1列和第二列的宽度分别设置为了12和6个字符,其他列的宽度并没改变。
如果你把列宽设置为0,那么调整为以下三个的最大值:10,该列的列名字符数,第一行记录该列的字符数。这样列的宽度就可以自动调整。
默认的列宽就是0,以便它可以自动调整
可以通过".header"命令可以设置是否显示头(头包括第一行,列名,第二行,分隔行)。
比如, 示例10
sqlite>  .header off
sqlite>  select * from tbl1;
hello         10    
goodbye       20    
sqlite>
"insert"模式下,返回的查询结果将以SQL的INSERT语句形式进行显示。
比如, 示例11
sqlite>  .mode insert new_table
sqlite>  select * from tbl1;
INSERT INTO 'new_table' VALUES('hello',10);
INSERT INTO 'new_table' VALUES('goodbye',20);
sqlite>
"html"模式下,查询返回结果将以XHTML table的形式进行显示,
它并不以<TABLE>作为开头和</TABLE>作为结尾。 但是每条记录以<TR>作为开始,</TR>作为结束,记录的数据以<TD>作为开始,以</TD>作为结束
比如, 示例12
sqlite>  select * from system;
select * from system;
<TR><TD>1</TD>
<TD>volume_music</TD>
<TD>7</TD>
</TR>
<TR><TD>4</TD>
<TD>volume_voice</TD>
<TD>4</TD>
</TR>
........省略.........
sqlite>
".output"命令可以把查询返回结果的输出定向到文件上。该命令的第一个参数即是要定向的位置。在把输出定向了文件后,可以通过".output stdout"把输出重新定向到标准输出上。
示例13
sqlite>  .mode list
sqlite> . separator |
sqlite>  .output test_file_1.txt
sqlite>  select * from tbl1;
sqlite>  .exit
$  cat test_file_1.txt
hello|10
goodbye|20
$

你可能感兴趣的:(sqlite,list,File,table,insert,output)