androidシェルのみを使用して、データベースに最大200行を効率的に挿入する方法を探しています。
私が使用しているスクリプトの関連部分は次のとおりです。
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への応答:
変更:
qry=$qry ($uid, '$pkg', 0, 0, 0, 0, 0, 0),
toqry=$qry" ($uid, '$pkg', 0, 0, 0, 0, 0, 0),"
および/system/xbin/sqlite3 /mnt/sdcard/apps.db $qry
to /system/xbin/sqlite3 /mnt/sdcard/apps.db "$qry;"
Echoing最後のコマンドは次のように表示されます:
/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