我在其中有3列我的PostgreSQL数据库中的表- c_uid,c_defaults和c_settings.c_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';
Run Code Online (Sandbox Code Playgroud)
但是,如何通过bash脚本实现此目的?
目的是从该列获取信息,编辑它并将其写回该列 - 所有这些都通过bash脚本完成.
例如,我有一个表存储值:
select * from myvalue;
val
-------
12345
(1 row)
Run Code Online (Sandbox Code Playgroud)
如何将其保存12345到postgresql或shell脚本中的变量中?
这是我在shell脚本中尝试的内容:
var=$(psql -h host -U user -d db <<SQLSTMT
SELECT * FROM myvalue;
SQLSTMT)
Run Code Online (Sandbox Code Playgroud)
但是echo $var给了我:
val ------- 12345 (1 row)
Run Code Online (Sandbox Code Playgroud)
我也试过了
\set var (select * from myvalue)
Run Code Online (Sandbox Code Playgroud)
在psql中,当我键入\set它时列出:
var = '(select*frommyvalue)'
Run Code Online (Sandbox Code Playgroud)