搭配 Aurora PostgreSQL 無限資料庫使用 COPY命令 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 Aurora PostgreSQL 無限資料庫使用 COPY命令

您可以使用 psql公用程式中的 \copy 功能,將資料匯入 Aurora PostgreSQL 無限資料庫並從中匯出資料

使用 COPY命令將資料載入 Aurora PostgreSQL 無限資料庫

Aurora PostgreSQL 無限資料庫與 psql公用程式中的\copy 功能相容,可用於匯入資料。

在 Aurora Postgre 中的無限資料庫中SQL,不支援下列項目:

  • 直接SSH存取資料庫執行個體 – 您無法將資料檔案 (例如 .csv 格式) 複製到資料庫執行個體主機COPY,並從檔案執行。

  • 在資料庫執行個體上使用本機檔案 – 使用 COPY ... FROM STDINCOPY ... TO STDOUT

PostgreSQL 中的 COPY命令具有使用本機檔案 (FROM/TO) 以及使用用戶端與伺服器 () 之間的連線傳輸資料的選項STDIN/STDOUT。如需詳細資訊,請參閱 PostgreSQL 文件COPY中的 。

PostgreSQL psql公用程式中的 \copy命令適用於執行psql用戶端之電腦上的本機檔案。它會在您連線的遠端 (例如,無限制資料庫) 伺服器上叫用個別 COPY ... FROM STDINCOPY ... 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;