问题描述
我有一个表,其中有3列我的PostgreSQL数据库 - c_uid
, c_defaults
和 c_settings
。 c_uid
简单地存储用户的名称, c_defaults
是一个漫长的一段文字,其中包含了大量的数据WRT的那用户。
I have a table in my PostgreSQL database which has 3 columns - c_uid
, c_defaults
and c_settings
. c_uid
simply stores the name of a user and c_defaults
is a long piece of text which contains a lot of data w.r.t that user.
我不得不从一个bash脚本,它选择根据 c_uid
c_defaults 列的值执行语句>价值,这需要由数据库用户的Postgres的。
I have to execute a statement from a bash script which selects the value of the c_defaults
column based on the c_uid
value and this needs to be done by the database user 'postgres'.
在命令行,我可以做到以下几点:
On the CLI I can do the following:
[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脚本实现这一目标?
However, how do I achieve this through a bash script?
其目的是获得该列的信息,编辑,并把它写回该列 - 全部通过一个bash脚本
The aim is to get the information from that column, edit it and write it back into that column - all through a bash script.
推荐答案
试试这个:
#!/bin/bash
su postgres
psql -d database_name -c "SELECT c_defaults FROM user_info WHERE c_uid = 'testuser'"
或者
#!/bin/bash
psql -U postgres -d database_name -c "SELECT c_defaults FROM user_info WHERE c_uid = 'testuser'"
另一种方式:
#!/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'"
这篇关于PostgreSQL的 - 从bash脚本数据库用户查询“Postgres的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!