PostgreSQL的 - 从bash脚本数据库用户查询“Postgres的 [英] PostgreSQL - query from bash script as database user 'postgres'

查看:744
本文介绍了PostgreSQL的 - 从bash脚本数据库用户查询“Postgres的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表,其中有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的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆