

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# COPY
<a name="r_COPY"></a>


|  | 
| --- |
| 自 2025 年 4 月 30 日起，COPY 和 UNLOAD 命令的用戶端加密將不再開放給新客戶使用。如果您在 2025 年 4 月 30 日之前的 12 個月內使用用戶端加密搭配 COPY 和 UNLOAD 命令，您可以繼續使用用戶端加密搭配 COPY 或 UNLOAD 命令，直到 2026 年 4 月 30 日為止。2026 年 4 月 30 日之後，您將無法再針對 COPY 和 UNLOAD 使用用戶端加密。我們建議您盡快針對 COPY 和 UNLOAD 改用伺服器端加密。如果您已針對 COPY 和 UNLOAD 使用伺服器端加密，則不會有任何變更，而且您可以繼續使用，不需更改查詢。如需 COPY 和 UNLOAD 加密的詳細資訊，請參閱下方的 ENCRYPTED 參數。 | 

從資料檔案或 Amazon DynamoDB 資料表，將資料載入資料表。檔案可能位於 Amazon Simple Storage Service (Amazon S3) 儲存貯體、Amazon EMR 叢集，或使用 Secure Shell (SSH) 連線來存取的遠端主機。

**注意**  
Amazon Redshift Spectrum 外部資料表是唯讀的。您無法 COPY 到外部資料表。

COPY 命令會將新的輸入資料附加到資料表中任何現有的列。

任何來源的單一輸入資料列最大為 4 MB。

**Topics**
+ [所需的許可](#r_COPY-permissions)
+ [COPY 語法](#r_COPY-syntax)
+ [必要參數](#r_COPY-syntax-required-parameters)
+ [選用的參數](#r_COPY-syntax-overview-optional-parameters)
+ [COPY 命令的使用注意事項和其他資源](#r_COPY-using-the-copy-command)
+ [COPY 命令範例](#r_COPY-using-the-copy-command-examples)
+ [COPY JOB](r_COPY-JOB.md)
+ [COPY 搭配 範本](r_COPY-WITH-TEMPLATE.md)
+ [COPY 參數參考](r_COPY-parameters.md)
+ [使用須知](r_COPY_usage_notes.md)
+ [COPY 範例](r_COPY_command_examples.md)

## 所需的許可
<a name="r_COPY-permissions"></a>

若要使用 COPY 命令，您必須擁有 Amazon Redshift 資料表的 [INSERT](r_GRANT.md#grant-insert) 權限。

## COPY 語法
<a name="r_COPY-syntax"></a>

```
COPY table-name 
[ column-list ]
FROM data_source
authorization
[ [ FORMAT ] [ AS ] data_format ] 
[ parameter [ argument ] [, ... ] ]
```

您可以只使用三個參數來執行 COPY 操作：資料表名稱、資料來源、存取資料的授權。

Amazon Redshift 延伸 COPY 命令的功能，可讓您從多個資料來源載入多種資料格式的資料、控制資料載入的存取權限、管理資料轉換，以及管理載入操作。

以下各節介紹必要的 COPY 命令參數，並依功能將選用參數分組。其中也會描述每個參數，並解釋如何搭配運用各種選項。您可以利用依字母順序排列的參數清單，直接跳到參數描述。

## 必要參數
<a name="r_COPY-syntax-required-parameters"></a>

COPY 命令需要三個元素：
+ [Table Name](#r_COPY-syntax-overview-table-name)
+ [Data Source](#r_COPY-syntax-overview-data-source)
+ [Authorization](#r_COPY-syntax-overview-credentials)

最簡單的 COPY 命令採用下列格式。

```
COPY table-name 
FROM data-source
authorization;
```

下列範例會建立名為 CATDEMO 的資料表，然後從 Amazon S3 中一個名為 `category_pipe.txt` 的資料檔案，將範例資料載入此資料表。

```
create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));
```

在下列範例中，COPY 命令的資料來源是位於名為 `category_pipe.txt` 之 Amazon S3 儲存貯體的 `tickit` 資料夾中，一個名為 `redshift-downloads` 的資料檔案。COPY 命令已獲授權，可透過 AWS Identity and Access Management (IAM) 角色存取 Amazon S3 儲存貯體。如果叢集現有的 IAM 角色已附加 Amazon S3 的存取權，您可以在下列 COPY 命令中換成此角色的 Amazon Resource Name (ARN)，再執行命令。

```
copy catdemo
from 's3://redshift-downloads/tickit/category_pipe.txt'
iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>'
region 'us-east-1';
```

如需如何使用 COPY 命令載入範例資料的完整指示，包括從其他 AWS 區域載入資料的指示，請參閱《[Amazon Redshift 入門指南》中的從 Amazon S3 載入範例資料](https://docs.aws.amazon.com/redshift/latest/gsg/rs-gsg-create-sample-db.html)。

*table-name*  <a name="r_COPY-syntax-overview-table-name"></a>
COPY 命令的目標資料表名稱。此資料表必須已存在於資料庫中。此資料表可以是暫時性或持久性。COPY 命令會將新的輸入資料附加到資料表中任何現有的資料列。

FROM *data-source*  <a name="r_COPY-syntax-overview-data-source"></a>
在目標資料表中載入之來源資料的位置。資訊清單檔案可與一些資料來源一起指定。  
最常用的資料儲存庫是 Amazon S3 儲存貯體。您也可以從位於 Amazon EMR 叢集、Amazon EC2 執行個體或遠端主機 (叢集可利用 SSH 連線來存取) 的資料檔案載入，或直接從 DynamoDB 資料表載入。  
+ [從 Amazon S3 進行 COPY](copy-parameters-data-source-s3.md)
+ [從 Amazon EMR 進行 COPY](copy-parameters-data-source-emr.md) 
+ [從遠端主機 COPY (SSH)](copy-parameters-data-source-ssh.md)
+ [從 Amazon DynamoDB 進行 COPY](copy-parameters-data-source-dynamodb.md)

Authorization  <a name="r_COPY-syntax-overview-credentials"></a>
子句，指出叢集用於身分驗證和授權存取其他 AWS 資源的方法。COPY 命令需要授權才能存取其他 AWS 資源中的資料，包括 Amazon S3、Amazon EMR、Amazon DynamoDB 和 Amazon EC2。您可以參考叢集附加的 IAM 角色，或將存取金鑰 ID 和私密存取金鑰提供給 IAM 使用者，以提供該授權。  
+ [授權參數](copy-parameters-authorization.md) 
+ [角色類型存取控制](copy-usage_notes-access-permissions.md#copy-usage_notes-access-role-based) 
+ [金鑰型存取控制](copy-usage_notes-access-permissions.md#copy-usage_notes-access-key-based) 

## 選用的參數
<a name="r_COPY-syntax-overview-optional-parameters"></a>

您可以選擇指定 COPY 如何將欄位資料映射至目標資料表中的欄、定義來源資料屬性讓 COPY 命令正確讀取和剖析來源資料，以及管理 COPY 命令在載入過程中執行哪些操作。
+ [欄映射選項](copy-parameters-column-mapping.md)
+ [資料格式參數](#r_COPY-syntax-overview-data-format)
+ [資料轉換參數](#r_COPY-syntax-overview-data-conversion)
+ [資料載入操作](#r_COPY-syntax-overview-data-load)

### 欄映射
<a name="r_COPY-syntax-overview-column-mapping"></a>

根據預設，COPY 會依欄位在資料檔案中出現的同樣順序，將欄位值插入目標資料表的欄。如果預設欄順序不適用，您可以指定欄清單或使用 JSONPath 表達式，將來源資料欄位映射至目標欄。
+ [Column List](copy-parameters-column-mapping.md#copy-column-list)
+ [JSONPaths File](copy-parameters-column-mapping.md#copy-column-mapping-jsonpaths)

### 資料格式參數
<a name="r_COPY-syntax-overview-data-format"></a>

您可以從固定寬度、字元分隔、逗號分隔值 (CSV) 或 JSON 格式的文字檔案，或從 Avro 檔案載入資料。

根據預設，COPY 命令預期來源資料是位於字元分隔的 UTF-8 文字檔案中。預設分隔符號是縱線字元 ( \$1 )。如果來源資料是其他格式，請使用下列參數來指定資料格式。
+ [FORMAT](copy-parameters-data-format.md#copy-format)
+ [CSV](copy-parameters-data-format.md#copy-csv)
+ [DELIMITER](copy-parameters-data-format.md#copy-delimiter) 
+ [FIXEDWIDTH](copy-parameters-data-format.md#copy-fixedwidth) 
+ [SHAPEFILE](copy-parameters-data-format.md#copy-shapefile) 
+ [AVRO](copy-parameters-data-format.md#copy-avro) 
+ [JSON format for COPY](copy-parameters-data-format.md#copy-json) 
+ [ENCRYPTED](copy-parameters-data-source-s3.md#copy-encrypted) 
+ [BZIP2](copy-parameters-file-compression.md#copy-bzip2) 
+ [GZIP](copy-parameters-file-compression.md#copy-gzip) 
+ [LZOP](copy-parameters-file-compression.md#copy-lzop) 
+ [PARQUET](copy-parameters-data-format.md#copy-parquet) 
+ [ORC](copy-parameters-data-format.md#copy-orc) 
+ [ZSTD](copy-parameters-file-compression.md#copy-zstd) 

### 資料轉換參數
<a name="r_COPY-syntax-overview-data-conversion"></a>

COPY 載入資料表時會嘗試隱含地將來源資料中的字串轉換為目標欄的資料類型。如果您需要指定不同於預設行為的轉換，或預設轉換造成錯誤，您可以指定下列參數來管理資料轉換。
+ [ACCEPTANYDATE](copy-parameters-data-conversion.md#copy-acceptanydate) 
+ [ACCEPTINVCHARS](copy-parameters-data-conversion.md#copy-acceptinvchars) 
+ [BLANKSASNULL](copy-parameters-data-conversion.md#copy-blanksasnull) 
+ [DATEFORMAT](copy-parameters-data-conversion.md#copy-dateformat) 
+ [EMPTYASNULL](copy-parameters-data-conversion.md#copy-emptyasnull) 
+ [ENCODING](copy-parameters-data-conversion.md#copy-encoding) 
+ [ESCAPE](copy-parameters-data-conversion.md#copy-escape) 
+ [EXPLICIT_IDS](copy-parameters-data-conversion.md#copy-explicit-ids) 
+ [FILLRECORD](copy-parameters-data-conversion.md#copy-fillrecord) 
+ [IGNOREBLANKLINES](copy-parameters-data-conversion.md#copy-ignoreblanklines) 
+ [IGNOREHEADER](copy-parameters-data-conversion.md#copy-ignoreheader) 
+ [NULL AS](copy-parameters-data-conversion.md#copy-null-as) 
+ [REMOVEQUOTES](copy-parameters-data-conversion.md#copy-removequotes) 
+ [ROUNDEC](copy-parameters-data-conversion.md#copy-roundec) 
+ [TIMEFORMAT](copy-parameters-data-conversion.md#copy-timeformat) 
+ [TRIMBLANKS](copy-parameters-data-conversion.md#copy-trimblanks) 
+ [TRUNCATECOLUMNS](copy-parameters-data-conversion.md#copy-truncatecolumns) 

### 資料載入操作
<a name="r_COPY-syntax-overview-data-load"></a>

指定下列參數來管理載入操作的預設行為，以進行故障排除或縮短載入時間。
+ [COMPROWS](copy-parameters-data-load.md#copy-comprows) 
+ [COMPUPDATE](copy-parameters-data-load.md#copy-compupdate) 
+ [IGNOREALLERRORS](copy-parameters-data-load.md#copy-ignoreallerrors) 
+ [MAXERROR](copy-parameters-data-load.md#copy-maxerror) 
+ [NOLOAD](copy-parameters-data-load.md#copy-noload) 
+ [STATUPDATE](copy-parameters-data-load.md#copy-statupdate) 

## COPY 命令的使用注意事項和其他資源
<a name="r_COPY-using-the-copy-command"></a>

如需如何使用 COPY 命令的相關資訊，請參閱下列主題：
+ [使用須知](r_COPY_usage_notes.md)
+ [教學課程：從 Amazon S3 載入資料](tutorial-loading-data.md)
+ [載入資料的 Amazon Redshift 最佳實務](c_loading-data-best-practices.md)
+ [使用 COPY 命令載入資料表](t_Loading_tables_with_the_COPY_command.md)
  + [從 Amazon S3 載入資料](t_Loading-data-from-S3.md)
  + [從 Amazon EMR 載入資料](loading-data-from-emr.md)
  + [從遠端主機載入資料](loading-data-from-remote-hosts.md) 
  + [從 Amazon DynamoDB 資料表載入資料](t_Loading-data-from-dynamodb.md)
+ [針對資料載入進行故障診斷](t_Troubleshooting_load_errors.md)

## COPY 命令範例
<a name="r_COPY-using-the-copy-command-examples"></a>

如需顯示如何從不同來源、不同格式和不同 COPY 選項進行 COPY 的更多範例，請參閱[COPY 範例](r_COPY_command_examples.md)。