bash - 使用本地提供的列表从远程 postgresql 数据库中删除记录

标签 bash postgresql shell psql

我在 bash 脚本中具有以下有效逻辑:

 #copy records to delete file to respective servers.  faster than running locally
 scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $dir/$server.records_to_delete.txt $server:/tmp/

 # trigger the deletion on remote machine.
 deletion_status=$(psql -U test testdb -h $server -c "CREATE TEMP TABLE tmp_cdr (id int); COPY tmp_widgets FROM '/tmp/$server.records_to_delete.txt'; DELETE FROM widgets USING tmp_cdr WHERE widgets.id = tmp_widgets.id;")

但我正在尝试将其合并为一个命令。因此,我不想将要删除的记录列表复制到远程服务器,而是将其保留在本地,并以某种方式使用本地文件创建 tmp_widgets。

如有任何建议,我们将不胜感激

最佳答案

您不需要将文件复制到服务器。您正在寻找的是 COPYSTDIN:

cat records_to_delete.txt | psql $server -c "COPY tmp_widgets FROM STDIN;"

关于bash - 使用本地提供的列表从远程 postgresql 数据库中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49307088/

相关文章:

sql - PostgreSQL 从具有指定条件的表中选择行

sql - PostgreSQL 不接受带有 VALUES 和 FROM 的 INSERT?

mysql - 预计脚本未正确发送密码

android - 无法在 Android 上设置日期 (ADB)

python - 从 Python3 中的文件名列表中查找文件的绝对路径

linux - 如何从 bash 获取平均 CPU 温度?

Linux:进程终止时停止监控工具

node.js - 使用 sequelize 进行子查询以使用日期和时间过滤即将发生的事件

shell - 在 shell 脚本中的 while 循环内增加变量值

ios - 当我在 xcode 中构建我的应用程序时,出现错误 :/bin/sh: bad interpreter: Operation not permitted