我不得不使用BASH连接到我们的PostgreSQL 9.1数据库服务器来执行各种SQL语句。在BASH中使用与PostgreSQL的开放数据库连接?
我们因重复打开/关闭太多数据库连接而导致性能问题(现在我们发送每条语句到psql命令)。
我正在寻找使用命名管道来维护SQL语句块的开放数据库连接的可能性。
我的问题是,一旦我打开连接并执行SQL语句,我不知道什么时候停止从psql读取。我想过解析输出来寻找提示,但我不知道是否安全,考虑到字符可能嵌入到SELECT输出中的可能性。
有没有人有建议?
这里是什么我迄今一个简单的例子...
#!/bin/bash
PIPE_IN=/tmp/pipe.in
PIPE_OUT=/tmp/pipe.out
mkfifo $PIPE_IN $PIPE_OUT
psql -A -t jkim_edr_md_xxx_db < $PIPE_IN > $PIPE_OUT &
exec 5> $PIPE_IN; rm -f $PIPE_IN
exec 4< $PIPE_OUT; rm -f $PIPE_OUT
echo 'SELECT * FROM some_table' >&5
# unfortunately, this loop blocks
while read -u 4 LINE
do
echo LINE=$LINE
done
PostgreSQL支持持久连接。您无需一直打开和关闭连接。 – Xeoncross 2012-02-08 19:21:01