database - 使用 shell 脚本更新 PostgreSQL 表的每一行

标签 database postgresql shell

我有一个 shell 脚本,其中有一个 ips 列表。

在该脚本的 for 循环下,每选择 15 个 ip 并将状态更改为“已删除”。

一些专家能否阐明我应该如何在 shell 脚本的 for 循环下更新那些 ips 列表? 意思是我应该从 shell 脚本的 for 循环内部做什么来对 PostgreSQL 数据库进行这些连续更改?

最佳答案

您可以使用命令行工具 psql 对 PostgreSQL 数据库进行更改。如果您有更新所需的密码,您可以设置 PGPASSWORD 环境变量。示例:

PGPASSWORD="mypassword" psql -U username -c database "statement"

如果不需要密码,则执行

psql -U username -c database "statement"

如果访问不需要用户名,你可以这样做

psql -c database "statement"

要更改随机 IP,我会使用 psql

创建一个包含所有 IP 的数组
SELECT * FROM ips;

然后创建15个随机数,将它们作为索引(当然你要确保没有创建两次随机数),然后将它们设置为在数据库中删除的状态。

看完评论: 要更新你可以这样做:

updateIP=`echo ip_string | awk -F' ' '{print $1}'`
psql -U user -c database "UPDATE iptable SET status='status_removed' WHERE ip='${updateIP}';"

要更新单个记录,假定您将 IP 存储在表“iptable”中,请输入“ip”列和“status”列下的状态。

关于database - 使用 shell 脚本更新 PostgreSQL 表的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29780513/

相关文章:

bash - 有没有办法将 bash shell 选项导出到 subshel​​l?

c# - 与 SQL Server 数据库相关的语法错误

mysql - 如何在没有客户端交互的情况下处理数据库处理服务器端?

sql - 使用 PostgreSQL 选择 json 中的特定条目

sql - 如何列出表外键

python - SQLAlchemy 中 dateutil.relativedelta 支持的子类间隔

mysql - 合并来自不同数据库的表

java - Android SQLite数据库主键查询

linux - 如何从路径中删除最短的子路径?

shell - 重定向到日志文件时如何在 stdout 和 stderr 输出前加上时间戳?