

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 从本地文件设置和工作流加载数据
<a name="query-editor-v2-loading-data-local"></a>

您可从本地文件将数据加载到现有表或新表中。

## 管理员设置从本地文件加载数据
<a name="query-editor-v2-loading-data-local-setup"></a>

查询编辑器 v2 管理员必须在 **Account settings**（账户设置）窗口中指定常用 Amazon S3 桶。必须为账户用户配置适当的权限。
+ 所需的 IAM 权限 – 从本地文件加载的用户必须拥有 `s3:ListBucket`、`s3:GetBucketLocation`、`s3:putObject`、`s3:getObject` 和 `s3:deleteObject` 权限。可以指定 *optional-prefix*，以将查询编辑器 v2 对此桶相关的使用限制为具有此前缀的对象。将同一 Amazon S3 桶用于查询编辑器 v2 以外的用途时，您可以使用此选项。有关桶和前缀的更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[管理用户对特定文件夹的访问权限](https://docs.amazonaws.cn/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-folders)。为确保不允许跨用户访问数据，我们建议查询编辑器 v2 管理员使用 Amazon S3 存储桶策略来限制基于 `aws:userid` 的对象访问权限。以下示例允许 Amazon S3 对 *<staging-bucket-name>* 拥有权限，并仅对前缀为 `aws:userid` 的 Amazon S3 对象进行读/写访问。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetBucketLocation"
              ],
              "Resource": [
                  "arn:aws:s3:::<staging-bucket-name>"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject"
              ],
              "Resource": [
                  "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*"
              ]
          }
      ]
  }
  ```

------
+ 数据分离 – 我们建议用户不要访问彼此的数据（即使是短暂的访问）。从本地文件加载将使用查询编辑器 v2 管理员设置的暂存 Amazon S3 桶。为暂存桶配置桶策略，以在用户之间提供数据分离。以下示例显示了在 *<staging-bucket-name>* 的用户之间分离数据的桶策略。

------
#### [ JSON ]

****  

  ```
  {
   "Version":"2012-10-17",		 	 	 
      "Statement": [
          {"Sid": "userIdPolicy",
              "Effect": "Deny",
              "Principal": "*",
              "Action": ["s3:PutObject",
                         "s3:GetObject",
                         "s3:DeleteObject"],
              "NotResource": [
                  "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*"
              ]
           }
      ]
  }
  ```

------

## 从本地文件加载数据
<a name="query-editor-v2-loading-data-local-procedure"></a>

**将本地文件数据加载到现有表中**

您的查询编辑器 v2 管理员必须在**账户设置**窗口中指定公共 Amazon S3 存储桶。查询编辑器 v2 会自动将本地文件上传到账户使用的公共 Amazon S3 存储桶，然后使用 COPY 命令加载数据。在查询编辑器 v2 加载本地文件窗口中生成和运行的 COPY 命令支持从 Amazon S3 复制的 COPY 命令语法可用的许多参数。有关 COPY 命令及其用于从 Amazon S3 加载数据的选项的信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [Amazon S3 中的 COPY 命令](https://docs.amazonaws.cn/redshift/latest/dg/copy-parameters-data-source-s3.html)。

1. 确认表已在要加载数据的数据库中创建。

1. 在查询编辑器 v2 的树视图面板中确认您已连接到目标数据库。使用上下文菜单（右键单击）创建与将要加载数据的集群或工作组的连接。

1. 选择 ![\[Load\]](http://docs.amazonaws.cn/redshift/latest/mgmt/images/qev2-upload.png)**Load data**（加载数据）

1. 对于 **Data source**（数据来源），选择 **Load from local file**（从本地文件中加载）。

1. 选择**浏览**以查找包含数据的文件来**加载文件**。默认情况下，会显示扩展名为 `.csv`、`.avro`、`.parquet` 和 `.orc` 的文件，但您可以选择其他文件类型。最大 文件大小为 100MB。

1. 为要上载的文件选择 **File format**（文件格式）。支持的数据格式有 CSV、JSON、DELIMITER、FIXEDWIDH、SHAPEFILE、AVRO、PARQUET 和 ORC。根据指定的文件格式，您可以选择相应的 **File options**（文件选项）。如果数据已加密，您还可以选择 **Data is encrypted**（数据已加密），并输入用于加密数据的 KMS 密钥 Amazon Resource Name（ARN）。

   如果您选择 CSV 或 DELIMITER，则还可以选择**分隔符字符**，以及在指定的行编号实际上是列名而不是要加载的数据时是否**忽略标题行**。

1. （可选）**Advanced settings**（高级设置）支持各种 **Data conversion parameters**（数据转换参数）和 **Load operations**（加载操作）。根据文件的需要输入此信息。

   有关数据转换和数据加载参数的更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的[数据转换参数](https://docs.amazonaws.cn/redshift/latest/dg/copy-parameters-data-conversion.html)和[数据加载操作](https://docs.amazonaws.cn/redshift/latest/dg/copy-parameters-data-load.html)。

1. 选择**下一步**。

1. 选择**加载现有表**。

1. 确认或选择**目标表**的位置，包括在其中加载数据的**集群或工作组**、**数据库**、**架构**和**表**名称。

1. （可选）您可以选择列名称以输入到 **Column mapping**（列映射）中，以按输入数据文件的顺序映射列。

1. 选择 **Load data**（加载数据）开启数据加载。

   加载完成后，无论加载成功与否，都会显示一条消息。如果成功，您现在可以使用 SQL 从加载的表中选择数据。当出现错误时，请查询系统视图 STL\$1LOAD\$1ERRORS 以获取更多详细信息。有关 COPY 命令错误的信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [STL\$1LOAD\$1ERRORS](https://docs.amazonaws.cn/redshift/latest/dg/r_STL_LOAD_ERRORS.html)。

   用于加载数据的 COPY 命令模板出现在您的 **Query history**（查询历史记录）中。此 COPY 命令模板显示了一些使用的参数，但它不能直接在编辑器选项卡中运行。有关查询历史记录的更多信息，请参阅[查看查询和选项卡历史记录](query-editor-v2-history.md)。

将数据加载到新表时，查询编辑器 v2 首先在数据库中创建表，然后作为同一个工作流中的单独操作加载数据。

**将本地文件数据加载到新表**

查询编辑器 v2 管理员必须在 **Account settings**（账户设置）窗口中指定常用 Amazon S3 桶。本地文件会自动上载到您的账户使用的一个公共 Amazon S3 桶，然后查询编辑器 v2 使用 COPY 命令加载数据。在查询编辑器 v2 加载本地文件窗口中生成和运行的 COPY 命令支持从 Amazon S3 复制的 COPY 命令语法可用的许多参数。有关 COPY 命令及其用于从 Amazon S3 加载数据的选项的信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [Amazon S3 中的 COPY 命令](https://docs.amazonaws.cn/redshift/latest/dg/copy-parameters-data-source-s3.html)。

1. 在查询编辑器 v2 的树视图面板中确认您已连接到目标数据库。使用上下文菜单（右键单击）创建与将要加载数据的集群或工作组的连接。

1. 选择 ![\[Load\]](http://docs.amazonaws.cn/redshift/latest/mgmt/images/qev2-upload.png)**Load data**（加载数据）

1. 对于 **Data source**（数据来源），选择 **Load from local file**（从本地文件中加载）。

1. 选择**浏览**以查找包含数据的文件来**加载文件**。默认情况下，会显示扩展名为 `.csv`、`.avro`、`.parquet` 和 `.orc` 的文件，但您可以选择其他文件类型。最大 文件大小为 100MB。

1. 为要上载的文件选择 **File format**（文件格式）。支持的数据格式有 CSV、JSON、DELIMITER、FIXEDWIDH、SHAPEFILE、AVRO、PARQUET 和 ORC。根据指定的文件格式，您可以选择相应的 **File options**（文件选项）。如果数据已加密，您还可以选择 **Data is encrypted**（数据已加密），并输入用于加密数据的 KMS 密钥 Amazon Resource Name（ARN）。

   如果您选择 CSV 或 DELIMITER，则还可以选择**分隔符字符**，以及在指定的行编号实际上是列名而不是要加载的数据时是否**忽略标题行**。

1. （可选）**Advanced settings**（高级设置）支持各种 **Data conversion parameters**（数据转换参数）和 **Load operations**（加载操作）。根据文件的需要输入此信息。

   有关数据转换和数据加载参数的更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的[数据转换参数](https://docs.amazonaws.cn/redshift/latest/dg/copy-parameters-data-conversion.html)和[数据加载操作](https://docs.amazonaws.cn/redshift/latest/dg/copy-parameters-data-load.html)。

1. 选择**下一步**。

1. 选择**加载新表**。

1. 确认或选择**目标表**的位置，包括在其中加载数据的**集群或工作组**、**数据库**和**架构**。输入要创建的**表**的名称。

1. 选择**创建表**即可使用所示的定义创建表。

   此时将显示表定义的复查摘要。系统会在数据库中创建表。以后要删除该表时，请运行 DROP TABLE SQL 命令。有关更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [DROP TABLE](https://docs.amazonaws.cn/redshift/latest/dg/r_DROP_TABLE)。

1. 选择 **Load data**（加载数据）开启数据加载。

   加载完成后，将会显示一条消息，指示加载是否成功。如果成功，您现在可以使用 SQL 从加载的表中选择数据。当出现错误时，请查询系统视图 STL\$1LOAD\$1ERRORS 以获取更多详细信息。有关 COPY 命令错误的信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [STL\$1LOAD\$1ERRORS](https://docs.amazonaws.cn/redshift/latest/dg/r_STL_LOAD_ERRORS.html)。

   用于加载数据的 COPY 命令模板出现在您的 **Query history**（查询历史记录）中。此 COPY 命令模板显示了一些使用的参数，但它不能直接在编辑器选项卡中运行。有关查询历史记录的更多信息，请参阅[查看查询和选项卡历史记录](query-editor-v2-history.md)。