我的PostgreSQL数据库中有一个表,它有3列——c_uidc_defaultsc_settings.c_uid只存储一个用户的名字,c_defaults是一段很长的文本,其中包含该用户的大量数据.

我必须从bash脚本中执行一条语句,该脚本根据c_uid值 Select c_defaults列的值,这需要由数据库用户"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脚本从该专栏中获取信息,对其进行编辑并将其写回该专栏.

推荐答案

试试这个:

#!/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'"

Sql相关问答推荐

Click house在数组中生成X行Y随机数

Oracle SQL中的累计总数

SQL查询以创建手头的流动余额?

如何解决Error:operator is not unique:unknown—unknown在一个动态SQL查询?""""

如何在case语句中使用条件来计算成对变量

SQL -滞后于上一个非重复值

将重复的值更新为下一个空闲数字

Oracle SQL根据列中的条件 Select 最大记录数

判断序列索引处的序列是否完整

过go 四周未填充的数据,即W50,51,52-SQL

将Dense_RANK列为聚合(非解析)函数(&A)

在PostgreSQL中汇总连接表中的 case 值

使用 Oracle SQL Developer 将不同的列值转换为列会导致错误 ORA-01489

统计重复记录的总数

Postgres,使用 select 插入多个值

验证某个日期前后的连续代码

识别SQL Server中的重复数字

oracle中多行的跨日期范围的交集

检索具有相同位置的最小和最大store 数量

包含多行的 SQL 查询