目前我正在从sqlite
个数据库中手动删除旧数据(超过90天),以下是目前正在执行的步骤。那么伙计使用Bash Script可以做这个工作吗?
1. cd /opt/db (my database location)
2. ls -lSh | head -n30 (sorting from top highest size .db files and notes all .db names)
3. sqlite3 test1.db (select database)
4. delete from tbl_outbox where time<='2016-02-10 00:00:00'; (delete data older more than 90 days)
5. vacuum;
有超过20个.db
个文件。所以我再一次按照下面的步骤3到5再做一遍
sqlite3 test2.db
delete from tbl_outbox where time<='2016-02-10 00:00:00';
vacuum;
你能否帮我创建bash脚本来完成这项任务。
感谢
答案 0 :(得分:3)
Shell可以循环...假设您使用bash或ksh,您可以使用类似下面的示例:
cd /opt/db
DATESTRING=$(date "+%Y-%m-%d 00:00:00" -d "now -90 day")
for DBFILE in *.db
do
echo "delete from tbl_outbox where time<='$DATESTRING'; vacuum;" | sqlite3 $DBFILE
done
如果您希望让它在特定的数据库列表上运行替代 带有空格分隔的db文件名列表的 .db ...如果可以对/opt/db/.db运行它,如果你添加/它就不需要编辑删除数据库