我想将以下postgreSQL查询结果存储在变量中。我在shell脚本上写命令。
psql -p $port -c "select pg_relation_size ('tableName')" postgres
我需要变量来将结果保存在文件中。我试过以下但是没有用
var= 'psql -p $port -c "select pg_relation_size ('tableName')" '
答案 0 :(得分:4)
使用shell HERE document
,如:
#!/bin/sh
COUNT=`psql -A -t -q -U username mydb << THE_END
SELECT count (DISTINCT topic_id) AS the_count
FROM react
THE_END`
echo COUNT=${COUNT}
psql <<the_end ... stuff here ... the_end
语句被打包成反对词COUNT
shell变量的值所以,你甚至可以这样做:
#!/bin/sh
DB_NAME="my_db"
USR_NAME="my_name"
TBL_NAME="my_table"
COL_NAME="my_column"
COUNT=`psql -A -t -q -U ${USR_NAME} ${DB_NAME} << THE_END
SELECT COUNT(DISTINCT ${COL_NAME} ) AS the_count
FROM ${TBL_NAME}
THE_END`
echo COUNT=${COUNT}
答案 1 :(得分:2)
要内联运行查询,您必须将其包装在严重的重音符号中,而不是单引号:
$ vim `which fancyexecfileinpath`
psql允许您从命令行运行查询,但我想您应该输入完整的信息。您可能缺少数据库名称。
postgres@slovenia:~$ psql -d mydbname -c "select * from applications_application;"
postgres@slovenia:~$ specialvar=`psql -d flango -c "select * from applications_application;"`
postgres@slovenia:~$ echo $specialvar
id | name | entities | folder | def_lang_id | ... | 2013-07-09 15:16:57.33656+02 | /img/app3.png (1 row)
postgres@slovenia:~$
在将其分配给specialvar
时,请注意重音符号
否则你将把它设置为一个字符串。
变量和等号(“=”)和值(http://genepath.med.harvard.edu/mw/Bash:HOW_TO:_Set_an_environment_variable_in_the_bash_shell)之间不应有空格