最近研究了几个软件,不管是之前的 clip studio paint 还是今个刚开始的 davince resolve,都有用到 sqlite 数据库来存储应用内部的一些数据。以 clip studio paint 的快捷键配置为例:
lucas@lucasdeMacBook-Pro Shortcut % pwd
/Users/lucas/Library/CELSYS/CLIPStudioPaintVer1_5_0/Shortcut
lucas@lucasdeMacBook-Pro Shortcut % ll
total 200
-rw-r--r-- 1 lucas staff 24576 9 28 23:00 DefaultToolModifyKey.tomd
-rw-r--r-- 1 lucas staff 57344 12 1 17:33 default.khc
-rw-r--r-- 1 lucas staff 20480 12 1 17:25 dialogstate
lucas@lucasdeMacBook-Pro Shortcut % sqlite3 default.khc
SQLite version 3.32.3 2020-06-18 14:16:19
Enter ".help" for usage hints.
sqlite> .table
shortcutinfo shortcutmenu
sqlite>
执行 .table 命令即可查看当前库中所有表,表 shortcutmenu 就记录了 csp 的所有快捷键,查询语句同 mysql:
sqlite> select count(1) from shortcutmenu;
722
sqlite> select * from shortcutmenu limit 3;
3617|advancedcommand|applicationabout|NULL|0
3618|advancedcommand|applicationversion|NULL|0
3619|advancedcommand|applicationpreference|K|4
这样虽能查出数据,但并不知道各个数据含义,且样式不够美观,可以做如下设置:
sqlite> .headers on
sqlite> .mode column
sqlite> select * from shortcutmenu limit 3;
_PW_ID menucommandtype menucommand shortcut modifier
---------- --------------- ---------------- ---------- ----------
3617 advancedcommand applicationabout NULL 0
3618 advancedcommand applicationversi NULL 0
3619 advancedcommand applicationprefe K 4
如此看起来就舒服多了,如果查看表结构可执行 .schema 命令:
sqlite> .schema shortcutmenu
CREATE TABLE shortcutmenu(_PW_ID INTEGER PRIMARY KEY AUTOINCREMENT, menucommandtype TEXT DEFAULT NULL, menucommand TEXT DEFAULT NULL, shortcut TEXT DEFAULT NULL, modifier INTEGER DEFAULT NULL);
.dump 可将其导出至文本文件:
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE shortcutmenu(_PW_ID INTEGER PRIMARY KEY AUTOINCREMENT, menucommandtype TEXT DEFAULT NULL, menucommand TEXT DEFAULT NULL, shortcut TEXT DEFAULT NULL, modifier INTEGER DEFAULT NULL);
INSERT INTO shortcutmenu VALUES(3617,'advancedcommand','applicationabout','NULL',0);
INSERT INTO shortcutmenu VALUES(3618,'advancedcommand','applicationversion','NULL',0);
...
COMMIT;
sqlite> .q
lucas@lucasdeMacBook-Pro Shortcut % sqlite3 default.khc .dump > testDb.txt
lucas@lucasdeMacBook-Pro Shortcut % ll
total 336
-rw-r--r-- 1 lucas staff 24576 9 28 23:00 DefaultToolModifyKey.tomd
-rw-r--r-- 1 lucas staff 57344 12 1 17:33 default.khc
-rw-r--r-- 1 lucas staff 20480 12 1 17:25 dialogstate
-rw-r--r-- 1 lucas staff 66012 12 6 20:50 testDb.txt
常用命令就以上这些了,其他的 insert、update 等等也基本类似于 mysql,需要时再查即可。