感谢以前的SO帖子,我现在可以合并sqlite数据库了。
但我希望使用bash脚本以自动方式运行此合并,
我尝试了各种方法,这是我最新的,也是最完整的失败:
## DB to merge
I1=d1.db
I2=d2.db
## Command to run
CMD='attach \'d2.db\' as toMerge; BEGIN; insert into sae select * from toMerge.sae; COMMIT; detach toMerge;'
echo $CMD
## Pass to sqlite
sqlite3 $I1 $CMD
这里遇到两个问题:
1-传递一个bash变量(这里是d2.db)。我也尝试过引用函数:
CMD='attach quote('$I2') as toMerge; BEGIN; insert into sae select * from toMerge.sae; COMMIT; detach toMerge;'
在select命令中的*以bash方式解释,因此是单引号。
答案 0 :(得分:2)
这有效
d1=d1.db
d2=d2.db
sqlite3 "$d1" <<!
attach database "$d2" as m;
insert into sae select * from m.sae;
detach m;
!
使用heredoc
答案 1 :(得分:0)
find . -name "*.db" -exec sqlite3 {} .dump \; | sqlite3 new_db