

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 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/)。

# 从压缩和未压缩文件中加载数据
<a name="t_splitting-data-files"></a>

加载压缩数据时，我们建议您将每个表的数据拆分成多个文件。当您加载未压缩的分隔数据时，COPY 命令使用大规模并行处理 (MPP) 和扫描范围，从 Amazon S3 桶的大型文件中加载数据。

## 从多个压缩文件中加载数据
<a name="t_splitting-data-files-compressed"></a>

如果您有压缩数据，我们建议您将每个表的数据拆分成多个文件。COPY 命令可以从多个文件并行加载数据。您可以通过指定一个通用前缀（对于集合，则为*前缀键*），或通过在清单文件中明确列出文件，从而加载多个文件。

将数据拆分成多个文件，以便文件数是您的集群中的切片数的倍数。这样，Amazon Redshift 就可以在切片之间均匀地拆分数据。每个节点的切片数取决于集群的节点大小。例如，每个 dc2.large 计算节点有两个切片，每个 dc2.8xlarge 计算节点有 16 个切片。有关每个节点大小拥有的切片数的更多信息，请转到《Amazon Redshift 管理指南》**中的[关于集群和节点](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes)。

所有节点均参与并行查询的运行，处理尽可能跨切片均匀分布的数据。如果您的集群有两个 dc2.large 节点，则可以将数据拆分为四个文件或四的倍数个文件。Amazon Redshift 在拆分工作负载时不会考虑文件大小。因此，您需要确保文件大小大致相同，压缩后大小为 1MB 到 1GB。

要使用对象前缀来标识加载文件，为每个文件命名时请加上一个通用前缀。例如，您可以将 `venue.txt` 文件拆分成四个文件，如下所示：

```
venue.txt.1
venue.txt.2
venue.txt.3
venue.txt.4
```

如果您在桶中的一个文件夹中放置多个文件，则可以将该文件夹名称指定为前缀，COPY 会加载该文件夹中的所有文件。如果您使用清单文件明确列出要加载的文件，则这些文件可以位于不同的桶或文件夹中。

有关清单文件的更多信息，请参阅[使用清单指定数据文件](r_COPY_command_examples.md#copy-command-examples-manifest)。

## 从未压缩的分隔文件中加载数据
<a name="t_splitting-data-files-uncompressed"></a>

当您加载未压缩的、分隔的数据时，COPY 命令会使用 Amazon Redshift 中的大规模并行处理 (MPP) 架构。Amazon Redshift 会自动使用并行工作的切片，从 Amazon S3 桶的大型文件中加载多个范围的数据。必须对文件进行分隔才能进行并行加载。例如，竖线分隔。使用 COPY 命令自动并行加载数据也适用于 CSV 文件。您还可以通过在表上设置分配键，从而充分利用并行处理。有关分配键的更多信息，请参阅[用于优化查询的数据分配](t_Distributing_data.md)。

当 COPY 查询包含以下任何关键字时，不支持自动并行加载数据：ESCAPE、REMOVEQUOTES 和 FIXEDWIDTH。

一个或多个文件中的数据将加载到目标表中，一行数据占据表中的一行。数据文件中的字段按从左到右的顺序与表列相匹配。数据文件中的字段可以是固定宽度，也可以用字符分隔；默认分隔符为竖线 (\$1)。默认情况下，将加载所有表列，但您可以选择定义用逗号分隔的列列表。如果 COPY 命令中指定的列列表中不包括某个表列，则该表列将加载为默认值。有关更多信息，请参阅 [加载默认列值](c_loading_default_values.md)。

在数据没有压缩和分隔时，请遵循此一般流程从 Amazon S3 加载数据：

1. 将您的文件上载到 Amazon S3 。

1. 运行 COPY 命令以加载表。

1. 确认数据已正确加载。

有关 COPY 命令的示例，请参阅 [COPY 示例](r_COPY_command_examples.md)。有关加载到 Amazon Redshift 的数据的信息，请查看 [STL\$1LOAD\$1COMMITS](r_STL_LOAD_COMMITS.md) 和 [STL\$1LOAD\$1ERRORS](r_STL_LOAD_ERRORS.md) 系统表。

有关各表中包含的节点以及切片的更多信息，请参阅《Amazon Redshift 管理指南》**中的[关于集群和节点](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes)。