PostgreSQL copy 命令教程詳解
報(bào)文介紹PostgreSQL copy 命令,通過示例展示把查詢結(jié)果導(dǎo)出到csv文件,導(dǎo)入數(shù)據(jù)文件至postgresql。
1. copy命令介紹
copy命令用于在postgreSql表和標(biāo)準(zhǔn)文件系統(tǒng)直接傳輸數(shù)據(jù)。copy命令讓PostgreSQL 服務(wù)器直接讀寫文件,因此文件必須讓PostgreSQL 用戶能夠訪問到。該命令使用的文件是數(shù)據(jù)庫服務(wù)器直接讀寫的文件,不是客戶端應(yīng)用的文件,因此必須位于服務(wù)器本地或被直接訪問的文件,而不是客戶端位置。
copy to 命令拷貝表內(nèi)容至文件,也可以拷貝select的查詢結(jié)果;也就說,如果select后面列出部分字段,則copy to 命令僅拷貝指定字段的結(jié)果至文件。準(zhǔn)備使用copy to 命令的表必須授予select權(quán)限。該命令僅能在表上使用,不能用于視圖;當(dāng)我們需要拷貝視圖內(nèi)容時(shí),可以給copy命令傳入sql查詢:
COPY (SELECT * FROM country) TO ‘list_countries.copy';
copy from拷貝文件的數(shù)據(jù)到數(shù)據(jù)表。當(dāng)使用copy from,文件中的每個(gè)字段被i順序插入特定字段。如果該命令中的表的列參數(shù)未指定則獲取它們的缺省值。使用copy from命令的表必須授予insert權(quán)限。
不要混淆copy命令和psql中的 \copy。\copy調(diào)用 COPY FROM STDIN 或 COPY TO STDOUT,然后返回?cái)?shù)據(jù)或存儲(chǔ)可以被psql客戶端訪問的文件數(shù)據(jù)。因此,當(dāng)使用\copy時(shí),文件的可訪問性和訪問權(quán)限取決于客戶端,而不是服務(wù)器。
2. copy命令示例
2.1 從Postgresql導(dǎo)出表
我們能拷貝表至控制臺(tái),并使用豎線(|)作為字段直接的分隔符:
copy customers to stdout(delimiter '|')
拷貝表至文件,使用空格作為字段直接的分隔符:
COPY customers TO '/database/data/test_data.copy' (DELIMITER ' ');
2.2 導(dǎo)入文件至Postgresql表
傳入文件至已經(jīng)存在的表:
COPY customers FROM '/database/data/test_data.copy' (DELIMITER ' ');
2.3 導(dǎo)出查詢結(jié)果至文件
導(dǎo)出查詢結(jié)果至文件:
COPY (SELECT * FROM customers WHERE name LIKE 'A%') TO '/data/test_data.copy';
如果需要壓縮數(shù)據(jù),使用下面命令:
COPY customers TO PROGRAM 'gzip > /data/test_data.copy.gz';
如果僅導(dǎo)出2列,使用下面命令:
COPY customers(col, col2) TO '/data/test_data.copy' DELIMITER ' ';
如果需要導(dǎo)出二進(jìn)制文件:
copy customers to 'e:/data.dat' with binary;
導(dǎo)出csv文件:
copy customers to 'e:/data.csv' with csv;
csv文件還有一些其他參數(shù):
DELIMITER – 數(shù)據(jù)行中分割每個(gè)字段的分隔符。csv文件一般使用逗號(hào).
HEADER – 指定csv文件的標(biāo)題,如果不需要標(biāo)題行,可以忽略HEADER.
COPY country FROM '/data/test_data.copy' WITH delimiter ',' CSV HEADER;
指定編碼:
COPY country FROM '/data/test_data.copy' WITH delimiter ',' CSV HEADER encoding 'utf-8';
3. 總結(jié)
本文介紹PostgreSQL中的copy命令,并通過示例展示了不同的應(yīng)用場(chǎng)景。使用COPY加載大量行總是比使用INSERT快,COPY會(huì)進(jìn)行一次設(shè)置,并且每行的開銷都非常低,尤其是在不涉及觸發(fā)器的情況下。
到此這篇關(guān)于PostgreSQL copy 命令教程詳解的文章就介紹到這了,更多相關(guān)PostgreSQL copy 命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何優(yōu)化在PostgreSQL中對(duì)于日期范圍的查詢
在 PostgreSQL 中,處理日期范圍的查詢是常見的操作,然而,如果不進(jìn)行適當(dāng)?shù)膬?yōu)化,這些查詢可能會(huì)導(dǎo)致性能問題,特別是在處理大型數(shù)據(jù)集時(shí),本文章將詳細(xì)討論如何優(yōu)化在 PostgreSQL 中對(duì)于日期范圍的查詢,需要的朋友可以參考下2024-07-07
開源數(shù)據(jù)庫postgreSQL13在麒麟v10sp1源碼安裝過程詳解
這篇文章主要介紹了開源數(shù)據(jù)庫postgreSQL13在麒麟v10sp1源碼安裝過程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
基于PostgreSQL/openGauss?的分布式數(shù)據(jù)庫解決方案
ShardingSphere-Proxy?作為透明數(shù)據(jù)庫代理,用戶無需關(guān)心?Proxy?如何協(xié)調(diào)背后的數(shù)據(jù)庫。今天通過本文給大家介紹基于PostgreSQL/openGauss?的分布式數(shù)據(jù)庫解決方案,感興趣的朋友跟隨小編一起看看吧2021-12-12
postgresql數(shù)據(jù)庫連接數(shù)和狀態(tài)查詢操作
這篇文章主要介紹了postgresql數(shù)據(jù)庫連接數(shù)和狀態(tài)查詢操作,具有很好的參考價(jià)值,對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
PostgreSQL數(shù)據(jù)庫實(shí)現(xiàn)公網(wǎng)遠(yuǎn)程連接的操作步驟
PostgreSQL是一個(gè)功能非常強(qiáng)大的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),本文呢將簡(jiǎn)單幾步通過cpolar 內(nèi)網(wǎng)穿透工具即可現(xiàn)實(shí)本地postgreSQL 遠(yuǎn)程訪問,需要的朋友可以參考下2023-09-09
如何使用Dockerfile創(chuàng)建PostgreSQL數(shù)據(jù)庫
這篇文章主要介紹了如何使用Dockerfile創(chuàng)建PostgreSQL數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-02-02
Postgresql的select優(yōu)化操作(快了200倍)
這篇文章主要介紹了Postgresql的select優(yōu)化操作(快了200倍),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL 實(shí)現(xiàn)將多行合并轉(zhuǎn)為列
這篇文章主要介紹了PostgreSQL 實(shí)現(xiàn)將多行合并轉(zhuǎn)為列的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
postgresql高級(jí)應(yīng)用之合并單元格的思路詳解
這篇文章主要介紹了postgresql高級(jí)應(yīng)用之合并單元格,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05

