0316 筆記 pg的copy和\copy命令粗略解析

在看 用 PostgreSQL 的 COPY 導(dǎo)入導(dǎo)出 CSV的時(shí)候試了下用COPY導(dǎo)出(導(dǎo)入覺(jué)得用COPY不太方便。。),但是在dbeaver里寫(xiě)sql的時(shí)候發(fā)現(xiàn)連遠(yuǎn)程數(shù)據(jù)庫(kù)執(zhí)行COPY命令會(huì)報(bào)沒(méi)有權(quán)限的錯(cuò)誤,如圖:

報(bào)錯(cuò)信息

我直接試了試在本地?cái)?shù)據(jù)庫(kù)上做這個(gè)操作后發(fā)現(xiàn)是沒(méi)有問(wèn)題,后來(lái)網(wǎng)上查了查并結(jié)合pg的文檔才知道COPY還有個(gè)對(duì)應(yīng)的命令是\COPY,因?yàn)楣倬W(wǎng)關(guān)于COPY的命令的介紹實(shí)在太長(zhǎng),下面就簡(jiǎn)單的把兩個(gè)命令的不同之處介紹下。

Files named in a COPY command are read or written directly by the server, not by the client application. Therefore, they must reside on or be accessible to the database server machine, not the client. They must be accessible to and readable or writable by the PostgreSQL user (the user ID the server runs as), not the client. Similarly, the command specified with PROGRAM is executed directly by the server, not by the client application, must be executable by the PostgreSQL user. COPY naming a file or command is only allowed to database superusers, since it allows reading or writing any file that the server has privileges to access.

  • COPY:只能管理員用戶使用,并且導(dǎo)出的文件要和數(shù)據(jù)庫(kù)在同一個(gè)主機(jī)上

因此我在dbeaver上對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)做copy to操作時(shí)會(huì)被提示需要權(quán)限,關(guān)于上面提到的第一次報(bào)錯(cuò)的問(wèn)題,我理解是我連接數(shù)據(jù)庫(kù)的賬號(hào)對(duì)于server來(lái)說(shuō)并沒(méi)有寫(xiě)入權(quán)限(不太確定。。)

Do not confuse COPY with the psql instruction \copy. \copy invokes COPY FROM STDIN or COPY TO STDOUT, and then fetches/stores the data in a file accessible to the psql client. Thus, file accessibility and access rights depend on the client rather than the server when \copy is used.

  • \COPY:普通數(shù)據(jù)庫(kù)賬號(hào)都可以用,并且可以從遠(yuǎn)端數(shù)據(jù)庫(kù)將數(shù)據(jù)直接導(dǎo)出到本地

根據(jù)database.yml的配置內(nèi)容登陸遠(yuǎn)程服務(wù)器后做copy to操作即可成功導(dǎo)出數(shù)據(jù),TO后面填的就是本地的地址

database_name=> \copy roles TO '/Users/dodo/documents/test2.csv' WITH csv;
#=> COPY 32

總結(jié):

一般來(lái)說(shuō)\COPY命令合適公司普通程序員和測(cè)試去快速的導(dǎo)出數(shù)據(jù),而COPY命令因?yàn)閷?duì)權(quán)限要求較高則適合數(shù)據(jù)庫(kù)管理員做操作。

參考文獻(xiàn)

https://www.postgresql.org/docs/current/static/sql-copy.html
https://ruby-china.org/topics/32293

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的閱讀 13,640評(píng)論 5 6
  • 時(shí)間來(lái)到一九八九年,秋收后的一天中午,二娃正蹲在屋檐下面搓衣服。 家里的搖錢(qián)樹(shù)(母豬)剛生完小豬不久,為了不讓小豬...
    話嘮的二娃閱讀 210評(píng)論 0 0
  • 大家好,第一次在簡(jiǎn)書(shū)發(fā)文。 因?yàn)楹闷嫘暮苤?,所以喜歡學(xué)習(xí)各種事務(wù),學(xué)到後面會(huì)發(fā)現(xiàn)會(huì)發(fā)現(xiàn)一團(tuán)亂,該是好好厘清自己的知...
    4108629d6c4e閱讀 205評(píng)論 0 1
  • 小雯,我非常地喜歡你,是真的非常喜歡。我想畢業(yè)以后咱們能夠在一起。我是認(rèn)真的,沒(méi)有開(kāi)玩笑。那時(shí)候剛來(lái)大學(xué)時(shí),就一直...
    fly_9cb0閱讀 628評(píng)論 0 0

友情鏈接更多精彩內(nèi)容