
作者:天津九安特機電工程有限公司 來(lái)源: 天津九安特機電工程有限公司 日期:2026-05-05 04:48:51
報文介紹PostgreSQL copy 命令,命(╬?益?)令通過(guò)示例展示把查詢(xún)結果導出到csv文件,教程導入數據文件至postgres(╯°□°)╯︵ ┻━┻ql。詳??解
1. copy命令介紹
copy命令用于在postgreSql表和標準文件系統直接傳輸數據。命令copy命令讓PostgreSQL 服務(wù)器直接讀寫(xiě)文件,教程因此文件必須讓PostgreSQL 用戶(hù)能夠訪(fǎng)ヽ(′▽?zhuān)?ノ問(wèn)到。詳解該命令使用的命令文件是數據庫服務(wù)器直接讀??寫(xiě)的文件,不(?⊿?)是教程客戶(hù)端應用的文件,因此必須(xu)位于服務(wù)器本地或被直??接訪(fǎng)問(wèn)的詳解文件,而不是命令客戶(hù)端位置。
copy( ?ヮ?) to 命令拷貝表內容至文件,教程也(ye)可以拷貝select的詳解查詢(xún)結果;也就說(shuō),如果select后面列出部分字段,命令則copy to??? 命令僅拷貝指定字段的教程結果至文件。準備使用copy to 命令的詳解表必須授予select權限。該命令僅能在表上使用,不能用于視圖;當我們需要拷貝視圖內容??時(shí),可以給copy命令傳入sql查詢(xún):
1C(◎_◎;)OPY (SELECT * FROM country) TO ‘list_countries.copy';
cop??y from拷貝文件的數據到數據表。當使用copy fr(′?_?`)om,文件中的每個(gè)字段被i順序插入特定字??段。如果該命令中的表的列參數未指定則獲取它們的缺省ヽ(′▽?zhuān)?/值。使用copy from命令的表必須授予in(???)sert權限。
不要混淆copy命令和psql中的 \copy。\copy調用 COPY FROM STDIN 或 COPヾ(′?`)?Y TO STDOUT,然后返回數據或存儲可以被psql(???)客戶(hù)端??訪(fǎng)問(wèn)的文件數據。因此,當使用\(╯°□°)╯︵ ┻━┻copy時(shí),文件的可訪(fǎng)問(wèn)性和訪(fǎng)問(wèn)權限取決于客戶(hù)端,而不是服務(wù)器。
2. copy命令示例
2.1 從Postgresql導出表
我們能拷貝表至控制臺,并使用豎線(xiàn)(|)作為字段直接的分隔符:
1copy customers to stdout(delimiter '|')
拷貝表至文件,使用空格作為字段直接的分隔符:
1COPY custo??mers TO '/database/data/test_??data.copy' (DELIMITER ' ');
2.2 導入文件至Postgresql表
傳入文件至已經(jīng)存在的表:
1COPY customers FR(╯°□°)╯OM '/data??base/dat??a/test_data??.copy' (DELIMITER ' ');
導出查詢(xún)結果至文件:
1COPY(′?_?`) (SELECT * FROM customers WHERE name LIKE 'A%') TO '/data(′?`)/(/ω\)test_data.copy';
1COPY customers TO PROGRAM 'gzip > /data/test_data.copy.gz';
如果僅導出2列,使用下??面命令:
1COPY customers(col, col2) TO '/data/test_data.copy'?? DELIMITER ' ';
如果需要導出二進(jìn)制文件:
1copy custo?mers to 'e:/data.dat' with binary;
導出csv文件:
1copy customer(′_ゝ`)s(′?`) to 'e:/(?????)data.csv' with csv;
csv文件還有一些其他參數:
DELIMITER – 數據行中分割每個(gè)字段的分隔符。??csv文件一般使用逗號.
HEADER – 指定csv文件的標題,如果不(bu)需要標題行,可以忽略HEADER.
1COPY country FROM '/data/test_data.copy' WITH delim(╯°□°)╯iter ',' CSV HEADER;
指定編碼:
1COPY country FROM '/data/test_data.copy' WITH delimiter ',' CSV HEAD???ER encoding 'utf-8';
3. 總結
本文介紹PostgreSQL中的copy命令,并通過(guò)示ヾ(′ω`)?例展示了不同的應用場(chǎng)景。使用COPY加載大量行總是比使用INSERT快,COPY會(huì )進(jìn)行一次設置,并且每行的??開(kāi)銷(xiāo)都非常低,尤其是在不涉及觸發(fā)器的情況下。
文章來(lái)??源:腳本之家
來(lái)源地址:https://www.jb51.net/ar(/ω\)ticle/204298.htm