本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 Aurora PostgreSQL 無限資料庫使用 COPY命令
您可以使用 psql
公用程式中的 \copy
使用 COPY命令將資料載入 Aurora PostgreSQL 無限資料庫
Aurora PostgreSQL 無限資料庫與 psql
公用程式中的\copy
在 Aurora Postgre 中的無限資料庫中SQL,不支援下列項目:
-
直接SSH存取資料庫執行個體 – 您無法將資料檔案 (例如 .csv 格式) 複製到資料庫執行個體主機
COPY
,並從檔案執行。 -
在資料庫執行個體上使用本機檔案 – 使用
COPY ... FROM STDIN
和COPY ... TO STDOUT
。
PostgreSQL 中的 COPY
命令具有使用本機檔案 (FROM/TO
) 以及使用用戶端與伺服器 () 之間的連線傳輸資料的選項STDIN/STDOUT
。如需詳細資訊,請參閱 PostgreSQL 文件COPY
PostgreSQL psql
公用程式中的 \copy
命令適用於執行psql
用戶端之電腦上的本機檔案。它會在您連線的遠端 (例如,無限制資料庫) 伺服器上叫用個別 COPY ... FROM STDIN
或 COPY ... FROM STDOUT
命令。它會將資料從本機檔案讀取至 STDIN
或從 寫入STDOUT
。
將資料分割為多個檔案
資料存放在 Aurora PostgreSQL 無限資料庫中的多個碎片上。若要使用 加速資料載入\copy
,您可以將資料分割成多個檔案。然後,透過平行執行個別\copy
命令,為每個資料檔案獨立匯入 。
例如,您有一個輸入資料檔案,CSV格式為 300 萬個資料列要匯入。您可以將檔案分割成每個區塊,每個區塊保留 200,000 個資料列 (15 個區塊):
split -l200000 data.csv data_ --additional-suffix=.csv -d
這會透過 data_00.csv
產生 檔案data_14.csv
。然後,您可以使用 15 個平行\copy
命令匯入資料,例如:
psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table from '/tmp/data_00.csv';" postgres_limitless & psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_01.csv';" postgres_limitless & ... psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_13.csv';" postgres_limitless & psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_14.csv';" postgres_limitless
使用此技術時,匯入相同數量的資料比使用單一\copy
命令快大約 10 倍。
使用 COPY命令將無限資料庫資料複製到 檔案
您可以使用 \copy
postgres_limitless=> \copy test_table TO '/tmp/test_table.csv' DELIMITER ',' CSV HEADER;