用于从sqlite3数据库中删除旧数据的脚本

时间:2016-05-10 07:50:40

标签: database bash sqlite

目前我正在从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脚本来完成这项任务。

感谢

1 个答案:

答案 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运行它,如果你添加/它就不需要编辑删除数据库