我有很多小的sqlite数据库文件。每个都是由运行的java应用程序生成的。我想将它们组合成一个带有find的单个数据库。
find . -name '*.db' -print0 | xargs -0 -I{} -P 4 `sqlite3 .dump {} | sqlite3 Combined.db`
OR
find . -name '*.db' -exec sqlite3 {} .dump \; | sqlite3 Combined.db
到目前为止我取得的最大成功是将一个数据库的内容写入Combined.db。所有其他变体都会导致错误。
答案 0 :(得分:1)
你不能同时做到这一点:
Error: near line 14: database is locked
Error: near line 3: database is locked
但你可以做:
mrg() {
sqlite3 "$1" .dump |
perl -pe 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g;' |
sqlite3 cmb;
}
export -f mrg
find . -name '*.db' | parallel -j1 mrg