通过bash脚本合并sqlite数据库

时间:2018-04-03 18:42:14

标签: bash sqlite

感谢以前的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方式解释,因此是单引号。

2 个答案:

答案 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