一尘不染

PostgreSQL-以数据库用户'postgres'的身份从bash脚本查询

sql

我在其中有3列我的PostgreSQL数据库中的表-
c_uidc_defaultsc_settingsc_uid只是存储用户名,并且c_defaults是一长段文本,其中包含该用户的大量数据。

我必须从bash脚本执行一条语句,该脚本根据该值选择c_defaults列的c_uid值,而这需要由数据库用户“ postgres”完成。

在CLI上,我可以执行以下操作:

[mymachine]# su postgres
bash-4.1$psql
postgres=#\c database_name
You are now connected to database "database_name" as user "postgres".
database_name=#SELECT c_defaults  FROM user_info WHERE c_uid = 'testuser';

但是,如何通过bash脚本实现此目标?

目的是通过bash脚本从该列中获取信息,对其进行编辑并将其写回到该列中。


阅读 158

收藏
2021-03-17

共1个答案

一尘不染

试试这个:

#!/bin/bash
psql -U postgres -d database_name -c "SELECT c_defaults  FROM user_info WHERE c_uid = 'testuser'"

或使用su

#!/bin/bash
su -c "psql -d database_name -c \"SELECT c_defaults  FROM user_info WHERE c_uid = 'testuser'\"" postgres

还有sudo

#!/bin/bash
sudo -u postgres -H -- psql -d database_name -c "SELECT c_defaults  FROM user_info WHERE c_uid = 'testuser'"
2021-03-17