日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

bash shell脚本访问PostgreSQL的三种方式

發(fā)布時(shí)間:2023/12/2 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bash shell脚本访问PostgreSQL的三种方式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

bash腳本里有三種方式訪問PostgreSQL數(shù)據(jù)庫

但前提是要設(shè)置密碼文件。當(dāng)然對于有系統(tǒng)對應(yīng)賬戶的數(shù)據(jù)庫角色可以繞過密碼登錄環(huán)節(jié),如

1 $ sudo -u postgres psql

1 2 $ sudo su - postgres $ psql

但是對于沒有系統(tǒng)賬戶對應(yīng)的數(shù)據(jù)庫角色,如要使用腳本登錄則必須使用PostgreSQL密碼文件

  • heredoc方式

    heredoc是一種很常用的方式,在bash環(huán)境下還可以使用變量替換,用法示例

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

    也可以在循環(huán)語句中,向數(shù)據(jù)庫批量插入數(shù)據(jù),類似

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

    但這種方式,每次插入一條語句都重新登錄一次數(shù)據(jù)庫,效率肯定不咋地。
    UPDATE(05/05/2014):既然可以使用變量替換,可以將所有插入語句組合到一個(gè)變量中,然后就可以在一次登錄中批量插入數(shù)據(jù)了。

    還可以用以下方式來獲取查詢結(jié)果

    1 2 3 4 5 result=`psql -U role -h localhost -d mydb << EOF ????SELECT * FROM products; EOF` echo ${result}
  • 使用psql命令行選項(xiàng)-f執(zhí)行sql腳本文件
    1 psql -U ${role} -h ${host} -d mydb -f ${scriptname}
  • 使用psql命令行選項(xiàng)-c執(zhí)行SQL語句或psql命令

    psql的-c選項(xiàng)可以指定SQL語句或者psql命令,但二者不能混合,除非使用管道。如果命令參數(shù)中有多條SQL語句,則它們在一個(gè)事務(wù)里執(zhí)行,除非使用BEGIN/COMMIT明確的指定事務(wù)。這與交互式使用psql終端不同,如果不明確指定事務(wù),則每條SQL屬于一個(gè)單獨(dú)的事務(wù)并自動(dòng)提交。只有最后一條SQL語句的結(jié)果被返回。
    詳見psql(1)。

可以看出,雖然有三種方式,但其實(shí)都是利用了PostgreSQL提供的外部命令psql,所以更復(fù)雜的數(shù)據(jù)庫操作可以考慮使用Python

P.S.
事實(shí)證明用bash腳本插入大量數(shù)據(jù),其效率相當(dāng)?shù)拖?#xff0c;3510行的兩個(gè)簡單字段的數(shù)據(jù)竟然用了4分多種。

===
評斷一個(gè)國家的品格,不僅要看它培養(yǎng)了什么樣的人民,還要看它的人民選擇對什么樣的人致敬,對什么樣的人追懷。 —— 約翰·肯尼迪

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

總結(jié)

以上是生活随笔為你收集整理的bash shell脚本访问PostgreSQL的三种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。