

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 支持的 Amazon S3 清单文件格式
<a name="supported-manifest-file-format"></a>

您可以使用 JSON 清单文件在 Amazon S3 中指定要导入到 Quick Sight 中的文件。这些 JSON 清单文件可以使用下文所述的 Quick Sight 格式，也可以使用亚马逊 Redshift 数据库开发者指南中[使用清单指定数据文件](https://docs.aws.amazon.com/redshift/latest/dg/loading-data-files-using-manifest.html)中描述的 *Amazon Redshift* 格式。您无需使用 Amazon Redshift 就能使用 Amazon Redshift 清单文件格式。

例如`my_manifest.json`，如果您使用 Quick Sight 清单文件，则其扩展名必须为.json。如果使用 Amazon Redshift 清单文件，则可以使用任何扩展名。

如果你使用亚马逊 Redshift 清单文件，Quick Sight 会像亚马逊 Redshift 一样处理可选`mandatory`选项。如果找不到关联的文件，Quick Sight 将结束导入过程并返回错误。

您选择导入的文件必须是分隔的文本（例如 .csv 或 .tsv）、日志 (.clf)、扩展日志 (.elf) 格式或 JSON (.json)。一个清单文件中标识的所有文件都必须使用相同的文件格式。另外，所有文件必须具有相同数量和类型的列。Quick Sight 支持 UTF-8 文件编码，但不 UTF-8 支持字节顺序标记 (BOM)。如果您要导入 JSON 文件，则对于 `globalUploadSettings`，请指定 `format`，而不是 `delimiter`、`textqualifier` 和 `containsHeader`。

确保您指定的任何文件都位于您已授予 Quick Sight 访问权限的 Amazon S3 存储桶中。有关授予 Quick Sight AWS 资源访问权限的信息，请参阅[配置 Amazon Quick Sight 对 AWS 数据源的访问权限](access-to-aws-resources.md)。

## Quick Sight 的清单文件格式
<a name="quicksight-manifest-file-format"></a>

Quick Sight 清单文件使用以下 JSON 格式。

```
{
    "fileLocations": [
        {
            "URIs": [
                "uri1",
                "uri2",
                "uri3"
            ]
        },
        {
            "URIPrefixes": [
                "prefix1",
                "prefix2",
                "prefix3"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "JSON",
        "delimiter": ",",
        "textqualifier": "'",
        "containsHeader": "true"
    }
}
```

使用 `fileLocations` 元素中的字段可指定要导入的文件，使用 `globalUploadSettings` 元素中的字段可指定这些文件的导入设置，如字段分隔符。

清单文件元素如下所述：
+ **fileLocations** – 可以使用该元素指定要导入的文件。您可以使用 `URIs` 和/或 `URIPrefixes` 数组来执行该操作。您必须在其中任意一项中至少指定一个值。
  + **URIs** – 可以使用该数组列出要导入的特定文件的 URI。

    Quick Sight 可以访问任何文件中的 Amazon S3 文件 AWS 区域。但是，如果该格式与您的 Quick 账户使用的 AWS 区域不同，则必须使用标识 Amazon S3 存储桶区域的 URI 格式。

    支持以下格式的 URI。  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-manifest-file-format.html)
  + **URIPrefixes** – 使用该数组列出 S3 存储桶和文件夹的 URI 前缀。将导入指定的存储桶或文件夹中的所有文件。Quick Sight 以递归方式从子文件夹中检索文件。

    Quick Sight 可以访问任何 AWS 区域存储桶中的 Amazon S3 存储桶或文件夹。 AWS 区域 如果 S3 存储桶与您的 Quick 账户使用的格式不同，请务必使用标识 S3 存储桶的 URI 前缀格式。

    支持以下格式的 URI 前缀。  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/quick/latest/userguide/supported-manifest-file-format.html)
+ **global UploadSettings** —（可选）使用此元素指定 Amazon S3 文件的导入设置，例如字段分隔符。如果未指定此元素，Quick Sight 将使用本节中字段的默认值。
**重要**  
对于日志 (.clf) 和扩展日志 (.elf) 文件，只有这部分中的 **format** 字段适用，因此，您可以跳过其他字段。如果选择包括它们，其值将被忽略。
  + **format** –（可选）指定要导入的文件的格式。有效的格式为 **CSV**、**TSV**、**CLF**、**ELF** 和 **JSON**。默认值为 **CSV**。
  + **delimiter** –（可选）指定文件字段分隔符。必须映射到 `format` 字段中指定的文件类型。有效的格式为用于 .csv 文件的逗号 (**,**) 和用于 .tsv 文件的制表符 (**\\t**)。默认值为逗号 (**,**)。
  + **textqualifier** –（可选）指定文件文本限定符。有效格式为单引号 (**'**)、双引号 (**\\"**)。开头的反斜线是 JSON 中的双引号必须使用的转义字符。默认值为双引号 (**\\"**)。如果您的文本不需要文本限定符，则不要包含此属性。
  + **containsHeader** –（可选）指定文件是否具有标题行。有效的格式为 **true** 或 **false**。默认值为 **true**。

### Quick Sight 的清单文件示例
<a name="quicksight-manifest-file-examples"></a>

以下是已完成的 Quick Sight 清单文件的一些示例。

以下示例显示一个清单文件，它指定两个要导入的特定 .csv 文件。这些文件对文本限定符使用双引号。默认值是可接受的，因此，跳过 `format`、`delimiter` 和 `containsHeader` 字段。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://{{yourBucket}}.{{s3}}.{{amazonaws.com}}/{{data-file.csv}}",
                "https://{{yourBucket}}.{{s3}}.{{amazonaws.com}}/{{data-file-2.csv}}"
            ]
        }
    ],
    "globalUploadSettings": {
        "textqualifier": "\""
    }
}
```

以下示例显示一个清单文件，它指定一个要导入的特定 .tsv 文件。该文件还包含其他 AWS 区域中的存储桶，其中包含要导入的其他 .tsv 文件。默认值是可接受的，因此跳过 `textqualifier` 和 `containsHeader` 字段。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://{{s3}}.{{amazonaws.com/}}{{amzn-s3-demo-bucket}}/{{data.tsv}}"
            ]
        },
        {
            "URIPrefixes": [
                "https://{{s3-us-east-1.amazonaws.com}}/{{amzn-s3-demo-bucket}}/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "TSV",
        "delimiter": "\t"
    }
}
```

以下示例指定两个包含要导入的 .clf 文件的存储桶。一个与 Quick 账户 AWS 区域 相同，另一个在不同账户中 AWS 区域。`delimiter`、`textqualifier` 和 `containsHeader` 字段不适用于日志文件，因此跳过这些字段。

```
{
    "fileLocations": [
        {
            "URIPrefixes": [
                "https://{{amzn-s3-demo-bucket1}}.{{your-s3-url}}.com",
                "s3://amzn-s3-demo-bucket2/"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "CLF"
    }
}
```

以下示例使用 Amazon Redshift 格式指定要导入的 .csv 文件。

```
{
    "entries": [
        {
            "url": "https://{{amzn-s3-demo-bucket}}.{{your-s3-url}}.com/myalias-test/file-to-import.csv",
            "mandatory": true
        }
    ]
}
```

以下示例使用 Amazon Redshift 格式指定两个要导入的 JSON 文件。

```
{
    "fileLocations": [
        {
            "URIs": [
                "https://{{yourBucket}}.{{s3}}.{{amazonaws.com}}/{{data-file.json}}",
                "https://{{yourBucket}}.{{s3}}.{{amazonaws.com}}/{{data-file-2.json}}"
            ]
        }
    ],
    "globalUploadSettings": {
        "format": "JSON"
    }
}
```