【问题标题】:How to run a bash script with psql如何使用 psql 运行 bash 脚本
【发布时间】:2021-08-07 20:23:13
【问题描述】:

对于非常菜鸟的问题,我很抱歉,但我对 shell 脚本完全陌生。

简单地说,我需要连接到托管在 AWS 上的 PostgreSQL 数据库,获取一些数据,将其保存为 CSV 并将此过程转换为可执行的 bash 脚本。我已在 pgAdmin 上成功执行此操作,但无法从我的终端执行此操作。

这是我目前正在做的事情:

#!/bin/bash

psql 
-U username
-h hostname
-d database
-p password 

copy 
(SELECT data FROM table LIMIT 100;) to "Users/name/Downloads" With CSV

现在我似乎无法在 bash 脚本中完成连接到数据库的过程,而且 SQL Query 也可能存在问题,因为它对 psql 的行为与对 pgAdmin 的行为不同。

根据我发现使用 su 或 sudo 命令可能有用的情况,有些人正在使用 --U 而不是 -U 但到目前为止我尝试过的任何方法似乎都不起作用。

作为参考,我使用的是 PostgreSQL 版本 12。我是游戏新手,需要一些帮助,我哪里出错了?

【问题讨论】:

  • 您尝试从哪个用户运行此脚本?首先尝试从命令提示符运行此命令。如果它在命令提示符下工作,则仅将其放入脚本文件中
  • 我试图从中运行的用户正在报告。我有只读权限
  • @AliImran :您发布的不是 bash 代码。您不希望 bash 理解 -U ,是吗?所以你想通过 PostreSQL 从 bash 运行 SQL 命令?
  • @AliImran : Here 是您可以在 bash 脚本中使用 psql 执行的操作。

标签: sql postgresql bash psql


【解决方案1】:

在“此处文档”中使用\copy

#!/bin/bash

psql -U username -h hostname -d database -p password -f - <<EOF
\copy (SELECT data FROM table LIMIT 100) to "Users/name/Downloads" With CSV
EOF

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2022-01-05
    • 2020-03-05
    • 2019-04-15
    • 2013-11-01
    • 2018-12-13
    • 2016-04-28
    • 2018-03-14
    相关资源
    最近更新 更多