bash脚本里有三种方式访问PostgreSQL数据库

但前提是要设置密码文件。当然对于有系统对应账户的数据库角色可以绕过密码登录环节,如

1
$ sudo -u postgres psql

1
2
$ sudo su - postgres
$ psql

但是对于没有系统账户对应的数据库角色,如要使用脚本登录则必须使用PostgreSQL密码文件

  • heredoc方式

    heredoc是一种很常用的方式,在bash环境下还可以使用变量替换,用法示例

    1
    2
    3
    psql -U ${role} -h ${host} -d mydb << EOF
        CREATE SCHEMA ${role};
    EOF

    也可以在循环语句中,向数据库批量插入数据,类似

    1
    2
    3
    4
    5
    6
    for ...
    do
    psql -U ${role} -h ${host} -d mydb << EOF
        INSERT INTO ${table} VALUES(${value1},${value2},...);
    EOF
    done

    但这种方式,每次插入一条语句都重新登录一次数据库,效率肯定不咋地。
    UPDATE(05/05/2014):既然可以使用变量替换,可以将所有插入语句组合到一个变量中,然后就可以在一次登录中批量插入数据了。

    还可以用以下方式来获取查询结果

    1
    2
    3
    4
    5
    result=`psql -U role -h localhost -d mydb << EOF
        SELECT * FROM products;
    EOF`
    echo ${result}

  • 使用psql命令行选项-f执行sql脚本文件
    1
    psql -U ${role} -h ${host} -d mydb -f ${scriptname}
  • 使用psql命令行选项-c执行SQL语句或psql命令

    psql的-c选项可以指定SQL语句或者psql命令,但二者不能混合,除非使用管道。如果命令参数中有多条SQL语句,则它们在一个事务里执行,除非使用BEGIN/COMMIT明确的指定事务。这与交互式使用psql终端不同,如果不明确指定事务,则每条SQL属于一个单独的事务并自动提交。只有最后一条SQL语句的结果被返回。
    详见psql(1)。

可以看出,虽然有三种方式,但其实都是利用了PostgreSQL提供的外部命令psql,所以更复杂的数据库操作可以考虑使用Python

P.S.
事实证明用bash脚本插入大量数据,其效率相当低下,3510行的两个简单字段的数据竟然用了4分多种。

===
评断一个国家的品格,不仅要看它培养了什么样的人民,还要看它的人民选择对什么样的人致敬,对什么样的人追怀。 —— 约翰·肯尼迪

原链接:http://openwares.net/database/bash_access_postgresql.html

bash shell脚本访问PostgreSQL的三种方式相关推荐

  1. 【Shell】Shell 脚本自动输入密码的三种方式

    Shell 脚本自动输入密码的三种方式 注意,如果创建.sh文件后不可以执行,请执行sudo chmod 755 文件名.sh来修改权限. 方式一 使用 echo "密码" | ( ...

  2. Struts2访问Servlet的三种方式

    Struts2访问Servlet的三种方式 基本介绍 在Struts2中,Action并没有直接和Servlet API耦合.虽然Struts2 中的Action访问Servlet API麻烦一些,但 ...

  3. Linux篇:shell脚本监控主机状态的3种方式

    01 前言 shell的基础语法学习告了一段路,现在开始实际操作练习,今天记录的是shell脚本的经典题目 监控主机或IP的状态,并给出提示,如以下背景: 编写脚本判断以下4个主机的状态 181.13 ...

  4. 【OpenCV】OpenCV访问像素点的三种方式

    环境配置   VS2013+OpenCV3.0+Win7(X64)    前言   OpenCV是图像处理最常用的库之一.它提供了许多常用的图像处理算法相关的函数,极大地方便了图像处理方法的开发,而图 ...

  5. 安装web服务器访问站点的三种方式,Web服务器配置方法

    您可能感兴趣的话题: 服务器配置 核心提示:本教程为大家介绍web服务器的配置方法. Web服务器概述 Web服务器又称为WWW服务器,它是放置一般网站的服务器.一台Web服务器上可以建立多个网站,各 ...

  6. COS中访问文件的三种方式

    1.通过FID来访问文件(比如EF,DF) 2.通过SFI来访问文件(有些COS命令可以通过SFI来快速访问文件,而不需要事先选中文件) 3.通过文件名来访问文件(只能是DF文件) 转载于:https ...

  7. Shell 字符串转数组的三种方式

    string="郭靖,黄蓉,神雕侠" **方式一:** array=(`echo $string | tr ',' ' '` ) **方式二:** array=(${string/ ...

  8. 实现内网映射的三种方式:

    实现内网映射的三种方式: 1.ngrok. 1)下载ngrok  下载地址:https://ngrok.com/download  选择合适的版本下载,我下载的是win64为的是这样: 2)解压下载下 ...

  9. 【Shell脚本】正确认识通过sh、./和source三种方式运行shell脚本的区别并据此定义和使用shell库函数

    文章目录 1. 从代码块到函数 2. 从函数到函数库 3. 定义 shell 函数库 4. 使用 shell 函数库 1. 从代码块到函数 在一个 shell 脚本中,你可以通过将具有独立功能的代码块 ...

最新文章

  1. POJ2492 A Bug s Life 题解
  2. 转 LIST INCARNATION OF DATABASE
  3. JAVA8 Stream方法使用详解Filter、map等用法(一)
  4. 部署OCS后修改web farm地址
  5. 【微机原理与接口技术】具体芯片(1)并行接口8255A(1):全局观
  6. hdu 3864 素数分解
  7. 场景联创 施耐德电气“绿色智能制造创赢计划”第二季收官
  8. SOTIF预期功能安全工作流程
  9. 牛客练习赛21:B. 黑妹的游戏II(博弈DP)
  10. ctworklist php开发,DICOM worklist工作原理
  11. MRP游戏软件常见问题解答以及破解方法!(新手必看)
  12. X-Pacific / Elasticsearch-ESClientRHL
  13. HCIE大师之路(三)——QOS综合实验
  14. 树莓派HDMI转VGA线有无源
  15. html5 游戏ui设计,7款手机游戏UI界面设计欣赏
  16. JS 的5个不良编码习惯,现在就改掉吧
  17. sqlnet.ora
  18. 光纤熔接机怎么选?从哪里买价格低服务有保障?
  19. Half a million dollars is or are a lot of money?
  20. 使用StreamTorrent观看流媒体电视

热门文章

  1. 课堂经验值管理小程序_微信小程序怎么管理门店?
  2. 嵌入式linux文件系统启动,嵌入式Linux之文件系统启动分析【原创】
  3. delphi image 编辑器_照片拼图编辑器app下载-照片拼图编辑器下载 v1.0.0 安卓版
  4. 大气校正后的ndvi_Sentinel2 L1C下载、大气校正、重采样
  5. mysql grant proxy on_MySQL 5.7权限的介绍
  6. 视频数据复用光端机故障排除方法
  7. 【渝粤教育】 国家开放大学2020年春季 1020国际私法 参考试题
  8. [渝粤教育] 中国地质大学 高级会计学 复习题
  9. 【渝粤题库】陕西师范大学201341 刑事诉讼法学作业
  10. 基于Semtech LoRa SX1268 电路设计及PCB布局