shell - 如何从 shell 脚本执行 sql 查询

标签 shell postgresql-9.1

我正在编写一个 shell 脚本来在 postgres 中运行一堆查询。

这是我写的脚本。

#!/bin/sh
host="172.16.7.102"
username="priyank"
dbname="truaxis"
x=1
echo "Connection done"
while [ $x -le 3 ]
do
        x=$(($x + 1 ))
        echo "Connection $x"
        psql -h $host $dbname $username << EOF
        select * from students where sid = $x;
        EOF
done

此脚本有两个问题。

  1. pgtest1.sh:17:语法错误:文件结尾意外(预期“完成”)

  2. 如何在sql中动态传递$x

我想在每次迭代中创建新的数据库连接。

我对 postgre 和 shell 都是新手。

谢谢

普里扬克

最佳答案

1) pgtest1.sh: 17: Syntax error: end of file unexpected (expecting "done")

您需要将 EOF 单独放在自己的行中(没有空格等)

     psql -h $host $dbname $username << EOF
        select * from students where sid = $x;
EOF

2) how do I pass $x in the sql dynamically

$ sh scriptname.sh value_of_x

然后在你的脚本中

x=$1

关于shell - 如何从 shell 脚本执行 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649794/

相关文章:

Linux 显示详细/技术文件信息

linux - 执行一个 UNIX 命令,如果不起作用则执行其他命令而不显示错误

linux - 是否可以使 bash shell 脚本与另一个命令行程序交互?

postgresql-9.1 - PostgreSQL强制使用小写名称?

postgresql - 将没有长独占锁的表中的整型键更改为bigint键

linux - linux中文件的原子读取和截断

linux - 如何将shell脚本case语句转换为perl脚本

java - 如何使用插入查询而不是复制查询在postgresql中生成数据库的脚本文件?

sql - 在另一个表中的一行的 UPDATE 中使用同一个表中的多行

postgresql - 如何在 Ansible 中定义要安装的包版本