

# Trabalhar com dados CSV no AWS Glue
<a name="schema-csv"></a>

Esta página descreve como usar o AWS Glue para criar um esquema usando arquivos CSV com valores de dados entre aspas de cada coluna ou de arquivos CSV que incluem valores de cabeçalho.

## Lidar com dados CSV entre aspas
<a name="schema-csv-quotes"></a>

Imagine que você tenha um arquivo CSV com campos de dados entre aspas duplas, como no seguinte exemplo.

```
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
```

Para executar uma consulta no Athena em uma tabela criada com base em um arquivo CSV que tenha valores entre aspas, você deve modificar as propriedades da tabela no AWS Glue para usar o OpenCSVSerDe. Para obter mais informações sobre o OpenCSV SerDe, consulte [Open CSV SerDe para processamento de CSV](csv-serde.md).

**Para editar as propriedades da tabela no console do AWS Glue**

1. No painel de navegação do console do AWS Glue, escolha **Tables**.

1. Escolha o link da tabela que deseja editar e, em seguida, escolha **Actions** (Ações) e **Edit table** (Editar tabela).

1. Na página **Edit table** (Editar tabela), faça as seguintes alterações:
   + Em **Serialization lib** (Biblioteca de serialização), insira `org.apache.hadoop.hive.serde2.OpenCSVSerde`.
   + Em **Serde parameters** (Parâmetros do Serde), insira os seguintes valores para as chaves `escapeChar`, `quoteChar` e `separatorChar`: 
     + Em `escapeChar`, insira uma barra invertida (**\$1**).
     + Em `quoteChar`, insira aspas duplas (**"**).
     + Em `separatorChar`, insira uma vírgula (**,**).

1. Escolha **Salvar**.

Para obter mais informações, consulte [Exibir e editar detalhes da tabela](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details) no *Guia do desenvolvedor do AWS Glue*.

Você também pode atualizar as propriedades da tabela AWS Glue programaticamente. Use a operação da API AWS Glue [UpdateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateTable.html) ou o comando da AWS CLI [update-table](https://docs.aws.amazon.com/cli/latest/reference/glue/update-table.html) para modificar o bloco `SerDeInfo` na definição da tabela, conforme mostrado no exemplo de JSON a seguir.

```
"SerDeInfo": {
   "name": "",
   "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
   "parameters": {
      "separatorChar": ","
      "quoteChar": "\""
      "escapeChar": "\\"
      }
},
```

## Lidar com arquivos CSV com cabeçalhos
<a name="schema-csv-headers"></a>

Quando você define uma tabela no Athena com uma instrução `CREATE TABLE`, pode usar a propriedade de tabela `skip.header.line.count` para ignorar os cabeçalhos nos dados CSV, conforme mostrado no exemplo a seguir.

```
...
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/csvdata_folder/';
TBLPROPERTIES ("skip.header.line.count"="1")
```

Se preferir, remova os cabeçalhos CSV com antecedência para que as informações do cabeçalho não sejam incluídas nos resultados da consulta do Athena. Uma maneira de fazer isso é usar os trabalhos do AWS Glue, que excutam o trabalho de Extract, Transform, and Load (ETL - Extração, transformação e carga). Você pode escrever scripts no AWS Glue usando uma linguagem que é uma extensão do dialeto PySpark Python. Para obter mais informações, consulte [Criação de trabalhos no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) no *Guia do desenvolvedor do AWS Glue*.

O exemplo a seguir mostra uma função em um script do AWS Glue que escreve um quadro dinâmico usando `from_options` e define a opção de formato `writeHeader` como falsa, o que remove as informações do cabeçalho:

```
glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")
```