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

Database 用于从sqlite3数据库中删除旧数据的脚本,database,bash,sqlite,Database,Bash,Sqlite,目前,我正在从sqlite数据库中手动删除旧数据(旧数据超过90天),因此下面是当前为此执行的步骤。所以伙计们可以用Bash脚本来完成这项工作吗 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

目前,我正在从
sqlite
数据库中手动删除旧数据(旧数据超过90天),因此下面是当前为此执行的步骤。所以伙计们可以用Bash脚本来完成这项工作吗

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;  
有人能帮我创建bash脚本来完成这个任务吗


谢谢

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
cd/opt/db
DATESTRING=$(日期“+%Y-%m-%d 00:00:00”-d“现在-90天”)
对于*.db中的DBFILE
做

echo“从tbl_发件箱中删除,其中时间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
cd/opt/db
DATESTRING=$(日期“+%Y-%m-%d 00:00:00”-d“现在-90天”)
对于*.db中的DBFILE
做

echo“从tbl\U发件箱中删除,其中时间无用地使用ls:我建议将
$(ls*.db)
替换为
*.db
。是的,有点。。。。整个命令替换是不必要的,但是在这一点上,您可以将任何命令放入其中。我想我已经在DATESTRING=$(date“+%Y-%m-%d 00:00:00”-d“now-90 day”)中展示了这一点,所以我会将其删除并按照您的建议执行。ls的无用用法:我建议将
$(ls*.db)
替换为
*.db
。是的。。。。整个命令替换是不必要的,但是在这一点上,您可以将任何命令放入其中。我想我已经在DATESTRING=$(date“+%Y-%m-%d00:00:00”-d“now-90 day”)中显示了这一点,所以我将对其进行etit并按照您的建议执行。