

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como o Step Functions analisa arquivos CSV de entrada
<a name="example-csv-parse-dist-map"></a>

**Gerenciar estados e transformar dados**  
Saiba mais sobre como [transmitir dados entre estados com variáveis](workflow-variables.md) e [transformar dados com JSONata](transforming-data.md).

O Step Functions analisa arquivos delimitados por texto com base nas seguintes regras:
+ O delimitador que separa os campos é especificado por in. `CSVDelimiter` *ReaderConfig* O delimitador usa `COMMA` como padrão.
+ As novas linhas são um delimitador que separa **registros**.
+ Os campos são tratados como strings. Para conversões de tipo de dados, use a função intrínseca `States.StringToJson` em [ItemSelector (mapa)](input-output-itemselector.md).
+ Não são necessárias aspas duplas (“ ”) nas strings. No entanto, strings delimitadas por aspas duplas podem conter vírgulas e novas linhas sem agir como delimitadores de registro.
+ É possível preservar as aspas duplas repetindo-as.
+ Barras invertidas (\$1) são outra forma de escapar de caracteres especiais. As barras invertidas só funcionam com outras barras invertidas, aspas duplas e com o separador de campo configurado, como vírgula ou barra vertical. Uma barra invertida seguida por qualquer outro caractere é removida silenciosamente.
+ É possível preservar as barras invertidas repetindo-as. Por exemplo: 

  ```
  path,size
  C:\\Program Files\\MyApp.exe,6534512
  ```
+ Barras invertidas que escapam das aspas duplas (`\"`) só funcionam quando incluídas em pares, então recomendamos escapar das aspas duplas as repetindo: `""`.
+ Se o número de campos em uma linha for **menor** que o número de campos no cabeçalho, o Step Functions fornecerá **strings vazias** para os valores que estão faltando.
+ Se o número de campos em uma linha for **maior** que aquele no cabeçalho, o Step Functions vai **ignorar** os campos adicionais.

**Exemplo de de como analisar um arquivo CSV de entrada**  
Digamos que você tenha fornecido um arquivo CSV chamado `myCSVInput.csv` que contém uma linha como entrada. Em seguida, você armazenou esse arquivo em um bucket do Amazon S3 que é chamado de `amzn-s3-demo-bucket`. O arquivo CSV é como a seguir.

```
abc,123,"This string contains commas, a double quotation marks (""), and a newline (
)",{""MyKey"":""MyValue""},"[1,2,3]"
```

A máquina de estado a seguir lê esse arquivo CSV e usa [ItemSelector (mapa)](input-output-itemselector.md) para converter os tipos de dados de alguns dos campos.

```
{
  "StartAt": "Map",
  "States": {
    "Map": {
      "Type": "Map",
      "ItemProcessor": {
        "ProcessorConfig": {
          "Mode": "DISTRIBUTED",
          "ExecutionType": "STANDARD"
        },
        "StartAt": "Pass",
        "States": {
          "Pass": {
            "Type": "Pass",
            "End": true
          }
        }
      },
      "End": true,
      "Label": "Map",
      "MaxConcurrency": 1000,
      "ItemReader": {
        "Resource": "arn:aws:states:::s3:getObject",
        "ReaderConfig": {
          "InputType": "CSV",
          "CSVHeaderLocation": "GIVEN",
          "CSVHeaders": [
            "MyLetters",
            "MyNumbers",
            "MyString",
            "MyObject",
            "MyArray"
          ]
        },
        "Parameters": {
          "Bucket": "amzn-s3-demo-bucket",
          "Key": "myCSVInput.csv"
        }
      },
      "ItemSelector": {
        "MyLetters.$": "$$.Map.Item.Value.MyLetters",
        "MyNumbers.$": "States.StringToJson($$.Map.Item.Value.MyNumbers)",
        "MyString.$": "$$.Map.Item.Value.MyString",
        "MyObject.$": "States.StringToJson($$.Map.Item.Value.MyObject)",
        "MyArray.$": "States.StringToJson($$.Map.Item.Value.MyArray)"
      }
    }
  }
}
```

Quando você executa essa máquina de estado, ela produz a saída a seguir.

```
[
  {
    "MyNumbers": 123,
    "MyObject": {
      "MyKey": "MyValue"
    },
    "MyString": "This string contains commas, a double quote (\"), and a newline (\n)",
    "MyLetters": "abc",
    "MyArray": [
      1,
      2,
      3
    ]
  }
]
```