您好,登錄后才能下訂單哦!
如何在PostgreSQL數據庫中使用opy 命令?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
1. copy命令介紹
copy命令用于在postgreSql表和標準文件系統直接傳輸數據。copy命令讓PostgreSQL 服務器直接讀寫文件,因此文件必須讓PostgreSQL 用戶能夠訪問到。該命令使用的文件是數據庫服務器直接讀寫的文件,不是客戶端應用的文件,因此必須位于服務器本地或被直接訪問的文件,而不是客戶端位置。
copy to
命令拷貝表內容至文件,也可以拷貝select的查詢結果;也就說,如果select后面列出部分字段,則copy to
命令僅拷貝指定字段的結果至文件。準備使用copy to
命令的表必須授予select權限。該命令僅能在表上使用,不能用于視圖;當我們需要拷貝視圖內容時,可以給copy命令傳入sql查詢:
COPY (SELECT * FROM country) TO ‘list_countries.copy';
copy from
拷貝文件的數據到數據表。當使用copy from
,文件中的每個字段被i順序插入特定字段。如果該命令中的表的列參數未指定則獲取它們的缺省值。使用copy from
命令的表必須授予insert權限。
不要混淆copy命令和psql中的 \copy
。\copy
調用 COPY FROM STDIN 或 COPY TO STDOUT
,然后返回數據或存儲可以被psql客戶端訪問的文件數據。因此,當使用\copy時,文件的可訪問性和訪問權限取決于客戶端,而不是服務器。
2.1 從Postgresql導出表
我們能拷貝表至控制臺,并使用豎線(|)作為字段直接的分隔符:
copy customers to stdout(delimiter '|')
拷貝表至文件,使用空格作為字段直接的分隔符:
COPY customers TO '/database/data/test_data.copy' (DELIMITER ' ');
2.2 導入文件至Postgresql表
傳入文件至已經存在的表:
COPY customers FROM '/database/data/test_data.copy' (DELIMITER ' ');
2.3 導出查詢結果至文件
導出查詢結果至文件:
COPY (SELECT * FROM customers WHERE name LIKE 'A%') TO '/data/test_data.copy';
如果需要壓縮數據,使用下面命令:
COPY customers TO PROGRAM 'gzip > /data/test_data.copy.gz';
如果僅導出2列,使用下面命令:
COPY customers(col, col2) TO '/data/test_data.copy' DELIMITER ' ';
如果需要導出二進制文件:
copy customers to 'e:/data.dat' with binary;
導出csv文件:
copy customers to 'e:/data.csv' with csv;
csv文件還有一些其他參數:
DELIMITER – 數據行中分割每個字段的分隔符。csv文件一般使用逗號.
HEADER – 指定csv文件的標題,如果不需要標題行,可以忽略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';
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。