使用postgreSQL命令行工具在shell脚本中自动执行数据库脚本


在使用postgreSQL时,很多情况下,我们希望编写一个shell脚本,来完成一些诸如创建数据库、创建数据表等等的操作,这个过程可以用psql工具来实现。

但如果用psql命令直接登陆,会提示输入密码(psql非常脑残地没有提供-password选项),就使得整个过程必须要人操作才能继续)。那么,先解决第一个问题:


psql无密码登录postgreSQL-server:

参考资料:http://francs3.blog.163.com/blog/static/405767272011725112431290/

我推荐使用第二种方法,即:

1.cd ~

2.vi .pgpass,并加入需要登录的服务器的信息,格式:地址:端口:用户名:密码

3.保存退出

4.使用【psql -h 地址 -p 端口 -U 用户名】登录


实现了无密码登录,接着还需要解决一个问题,我们希望的是一个控制台命令就能执行语句,执行完就结束,不要进入psql的输入等待状态,导致shell无法结束

使用--command选项,即可实现执行脚本,并在执行完毕后退出

例如:

[plain]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. psql -h 地址 -p 端口 -U 用户 --command CREATE DATABASE test  

成功创建test数据库


另:

如果要执行CREATE TABLE等命令,需要用-d选项指定数据库,否则会在默认数据库中操作

### 回答1: 可以使用psql命令行客户端来连接PostgreSQL,具体步骤如下:1. 在shell脚本定义必要的变量,如数据库名称、用户名和密码,连接字符串等。 2. 使用psql命令行客户端登录远程PostgreSQL服务器,如下所示:psql -h HOST -U USERNAME -d DATABASE -W3. 在登录后,可以执行SQL语句来操作PostgreSQL数据库。 ### 回答2: 举例: 假设我们要连接到一个名为"mydatabase"的远程PostgreSQL数据库,并执行一条查询语句,将结果保存到一个文件。我们可以使用以下shell脚本来实现: ```bash #!/bin/bash # 定义连接参数 host="remote_host" # 远程主机地址 port="5432" # 远程主机端口 database="mydatabase" # 数据库名称 user="myuser" # 数据库用户名 password="mypassword" # 数据库密码 # 定义查询语句和输出文件 query="SELECT * FROM mytable;" output_file="output.txt" # 连接并执行查询 psql -h $host -p $port -d $database -U $user -c "$query" > $output_file # 输出结果 echo "查询结果已保存到文件:$output_file" ``` 在这个例子,我们使用了psql命令来连接到远程PostgreSQL数据库,并执行了一条查询语句。通过设置`-h`和`-p`参数来指定远程主机地址和端口,`-d`参数指定要连接的数据库名称,`-U`参数指定登录用户名,`-c`参数指定要执行的SQL语句。最后,通过将输出重定向到一个文件来保存查询的结果。 请注意,为了安全起见,建议将密码以安全的方式存储,而不是硬编码在脚本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值