linux学习记录
分类: Mysql/postgreSQL
2014-05-29 13:59:31
bash脚本里有三种方式访问PostgreSQL数据库
但前提是要设置密码文件。当然对于有系统对应账户的数据库角色可以绕过密码登录环节,如
$ sudo -u postgresql psql
或
$ sudo su - postgres
但是对于没有系统账户对应的数据库角色,如要使用脚本登录则必须使用PostgreSQL密码文件
heredoc是一种很常用的方式,在bash环境下还可以使用变量替换,用法示例
psql -U ${role} -h ${host} -d mydb << EOF
还可以用以下方式来获取查询结果
result=`psql -U role -h localhost -d mydb << EOF
psql的-c选项可以指定SQL语句或者psql命令,但二者不能混合,除非使用管道。如果命令参数中有多条SQL语句,则它们在一个事务里执
行,除非使用BEGIN/COMMIT明确的指定事务。这与交互式使用psql终端不同,如果不明确指定事务,则每条SQL属于一个单独的事务并自动提
交。只有最后一条SQL语句的结果被返回。
详见psql(1)。
可以看出,虽然有三种方式,但其实都是利用了PostgreSQL提供的外部命令psql,所以更复杂的数据库操作可以考虑使用Python
P.S.
事实证明用bash脚本插入大量数据,其效率相当低下,3510行的两个简单字段的数据竟然用了4分多种。