2011/06/10

android database management -2

前一篇所說的,sqlite3 還可以在命令列操作,

# sqlite3 -help                                         
Usage: sqlite3 [OPTIONS] FILENAME [SQL]
FILENAME is the name of an SQLite database. A new database is created
if the file does not previously exist.
OPTIONS include:
   -help                show this message
   -init filename       read/process named file
   -echo                print commands before execution
   -[no]header          turn headers on or off
   -bail                stop after hitting an error
   -interactive         force interactive I/O
   -batch               force batch I/O
   -column              set output mode to 'column'
   -csv                 set output mode to 'csv'
   -html                set output mode to HTML
   -line                set output mode to 'line'
   -list                set output mode to 'list'
   -separator 'x'       set output field separator (|)
   -stats               print memory stats before each finalize
   -nullvalue 'text'    set text string for NULL values
   -version             show SQLite version
裡面很多選項都跟上一篇寫的 sqlite3 命令有相對應。這邊講一下怎樣在 command line 寫成 script....

# sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select * from system;"

上面的 sql 語法本來也可以在 sqlite3 命令提示下操作,寫在命令列則可以自動化。
# echo "select * from system;" | sqlite3 /data/data/com.android.providers.settings/databases/settings.db

用常見的 stdin 轉向也有同樣的功效,那麼,我們也可以寫在檔案中,再用 cat YourSQL.sql | sqlite3 YOUR_DATABASE 的方式
要特別跟大家講的是,有個 -init 選項,這個是進 sqlite3 的初始化, 也就是說....
1. 把你要的 sql 存檔,譬如把 select * from system; 存在 s.sql 中,然後用
2. sqlite3 -init s.sql /data/data/com.android.providers.settings/databases/settings.db 來執行的話,最後會停在 sqlite3 的命令提示符號下,所以與下面這方式是不同的...
3. cat s.sql | sqlite3 /data/data/com.android.providers.settings/databases/settings.db

0 意見: