lfr*_*eez 1 database sqlite bash
目前,我正在从数据库中手动删除旧数据(超过 90 天的旧数据)sqlite,因此以下是当前执行的步骤。那么伙计们是否可以使用 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;
Run Code Online (Sandbox Code Playgroud)
有20多个.db文件。所以我再一一执行上面的步骤 3 到 5,如下所示
sqlite3 test2.db
delete from tbl_outbox where time<='2016-02-10 00:00:00';
vacuum;
Run Code Online (Sandbox Code Playgroud)
你能帮我创建 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
Run Code Online (Sandbox Code Playgroud)
如果您希望让它在特定的数据库列表上运行,请 用空格分隔的数据库文件名列表替换 .db ...如果可以针对 /opt/db/ .db 运行它,则不需要编辑您添加/删除数据库
| 归档时间: |
|
| 查看次数: |
1245 次 |
| 最近记录: |