Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过bash脚本合并sqlite数据库_Bash_Sqlite - Fatal编程技术网

通过bash脚本合并sqlite数据库

通过bash脚本合并sqlite数据库,bash,sqlite,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 ##

多亏了以前的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)。我也尝试过quote函数:

CMD='attach quote('$I2') as toMerge; BEGIN; insert into sae select * from toMerge.sae; COMMIT; detach toMerge;'
2-select命令中的*以bash方式解释,因此使用单引号。

这是有效的

d1=d1.db
d2=d2.db
sqlite3 "$d1" <<!
attach database "$d2" as m;
insert into sae select * from m.sae;
detach m;
!
d1=d1.db
d2=d2.db
sqlite3“$d1”
使用

这是可行的

d1=d1.db
d2=d2.db
sqlite3 "$d1" <<!
attach database "$d2" as m;
insert into sae select * from m.sae;
detach m;
!
d1=d1.db
d2=d2.db
sqlite3“$d1”
使用

它是分隔符,
它是分隔符,