我正在寻找一种在数据库中有效插入约 200 行的方法,专门使用 android shell。
我正在使用的脚本的相关部分是:
while read line
do
uid=`echo $line " awk '{print($2)}'`
pkg=`echo $line " awk '{print($1)}'`
/system/xbin/sqlite3 /mnt/sdcard/apps.db "INSERT INTO app_list values($uid, '$pkg', 0, 0, 0, 0, 0, 0)
done < /data/system/packages.list
此脚本的目标是生成一个包含所有已安装应用程序列表(UID/包名称)的数据库。其他列将在以后使用。
对于约 200 个应用程序,此脚本需要几分钟:每个 sqlite 命令需要约 2 秒才能执行。这应该通过使用事务来大大改善,但我看不出有明确的方法来做到这一点。
任何帮助将不胜感激,
谢谢。
编辑:
回应帖子 #1:
Changed:
qry=$qry ($uid, '$pkg', 0, 0, 0, 0, 0, 0),
to qry=$qry" ($uid, '$pkg', 0, 0, 0, 0, 0, 0),"
and /system/xbin/sqlite3 /mnt/sdcard/apps.db $qry
to /system/xbin/sqlite3 /mnt/sdcard/apps.db "$qry;"
Echoing the last command shows:
/system/xbin/sqlite3 /mnt/sdcard/apps.db INSERT INTO app_list VALUES (10028, 'com.google', 0, 0, 0, 0, 0, 0), (10048, 'com.google.something', 0, 0, 0, 0, 0, 0), ... (10062, 'com.google.somethingelse', 0, 0, 0, 0, 0, 0);
这似乎是正确的,但在执行时会输出以下错误:
SQL error: near ",": syntax error