

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

# 使用 COPY 命令搭配 Aurora PostgreSQL Limitless Database
<a name="limitless-load.copy"></a>

您可以使用 `psql` 公用程式中的 [\\copy](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMANDS-COPY) 功能，將資料匯入 Aurora PostgreSQL Limitless Database 並從中匯出資料

## 使用 COPY 命令將資料載入 Aurora PostgreSQL Limitless Database
<a name="limitless-load.copy-to"></a>

Aurora PostgreSQL Limitless Database 與 `psql` 公用程式中的 [\\copy](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMANDS-COPY) 功能相容，可用於匯入資料。

在 Limitless Database 中 (如同在 Aurora PostgreSQL 中)，不支援下列項目：
+ 直接 SSH 存取資料庫執行個體：您無法將資料檔案 (例如 .csv 格式) 複製到資料庫執行個體主機，並從檔案執行 `COPY`。
+ 在資料庫執行個體上使用本機檔案：使用 `COPY ... FROM STDIN` 和 `COPY ... TO STDOUT`。

PostgreSQL 中的 `COPY` 命令具有使用本機檔案 (`FROM/TO`) 以及使用用戶端與伺服器 (`STDIN/STDOUT`) 之間連線傳輸資料的選項。如需詳細資訊，請參閱 PostgreSQL 文件中的 [COPY](https://www.postgresql.org/docs/current/sql-copy.html)。

PostgreSQL `psql` 公用程式中的 `\copy` 命令適用於執行 `psql` 用戶端所在電腦上的本機檔案。其會在您連線的遠端 (例如 Limitless Database) 伺服器上調用個別 `COPY ... FROM STDIN`或 `COPY ... FROM STDOUT` 命令。其會從本機檔案將資料讀取至 `STDIN` 或從 `STDOUT` 寫入至其中。

### 將資料分割為多個檔案
<a name="limitless-load.copy-split"></a>

資料會存放在 Aurora PostgreSQL Limitless Database 中的多個碎片。若要使用 `\copy` 加快資料載入速度，您可以將資料分割成多個檔案。然後，透過平行執行個別 `\copy` 命令，為每個資料檔案獨立匯入。

例如，您有 CSV 格式的輸入資料檔案，其中包含 300 萬個要匯入的列。您可以將檔案分割成每個保留 200,000 列 (15 個區塊) 的區塊：

```
split -l200000 data.csv data_ --additional-suffix=.csv -d
```

這會透過 `data_14.csv` 產生檔案 `data_00.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 命令將 Limitless Database 資料複製到檔案
<a name="limitless-load.copy-from"></a>

如下列範例所示，您可以使用 [\\copy](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMANDS-COPY) 命令，將資料從無限制資料表複製到檔案：

```
postgres_limitless=> \copy test_table TO '/tmp/test_table.csv' DELIMITER ',' CSV HEADER;
```