溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何在PostgreSQL數(shù)據(jù)庫(kù)中使用opy 命令

發(fā)布時(shí)間:2021-01-18 16:20:01 來(lái)源:億速云 閱讀:170 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

如何在PostgreSQL數(shù)據(jù)庫(kù)中使用opy 命令?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

1. copy命令介紹

copy命令用于在postgreSql表和標(biāo)準(zhǔn)文件系統(tǒng)直接傳輸數(shù)據(jù)。copy命令讓PostgreSQL 服務(wù)器直接讀寫(xiě)文件,因此文件必須讓PostgreSQL 用戶(hù)能夠訪問(wèn)到。該命令使用的文件是數(shù)據(jù)庫(kù)服務(wù)器直接讀寫(xiě)的文件,不是客戶(hù)端應(yīng)用的文件,因此必須位于服務(wù)器本地或被直接訪問(wèn)的文件,而不是客戶(hù)端位置。

copy to 命令拷貝表內(nèi)容至文件,也可以拷貝select的查詢(xún)結(jié)果;也就說(shuō),如果select后面列出部分字段,則copy to 命令僅拷貝指定字段的結(jié)果至文件。準(zhǔn)備使用copy to 命令的表必須授予select權(quán)限。該命令僅能在表上使用,不能用于視圖;當(dāng)我們需要拷貝視圖內(nèi)容時(shí),可以給copy命令傳入sql查詢(xún):

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客戶(hù)端訪問(wèn)的文件數(shù)據(jù)。因此,當(dāng)使用\copy時(shí),文件的可訪問(wèn)性和訪問(wèn)權(quán)限取決于客戶(hù)端,而不是服務(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)出查詢(xún)結(jié)果至文件

導(dǎo)出查詢(xún)結(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';

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI