

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Come Step Functions analizza i file CSV di input
<a name="example-csv-parse-dist-map"></a>

**Gestione dello stato e trasformazione dei dati**  
Scopri come [passare dati tra stati con variabili](workflow-variables.md) e [Trasformare dati](transforming-data.md) con. JSONata

Step Functions analizza i file delimitati da testo in base alle seguenti regole:
+ Il delimitatore che separa i campi è specificato da in. `CSVDelimiter` *ReaderConfig* Il delimitatore predefinito è. `COMMA`
+ **Le nuove righe sono un delimitatore che separa i record.**
+ I campi vengono trattati come stringhe. Per le conversioni dei tipi di dati, usa la funzione `States.StringToJson` intrinseca in. [ItemSelector (Mappa)](input-output-itemselector.md)
+ Le virgolette doppie (» «) non sono necessarie per racchiudere stringhe. Tuttavia, le stringhe racchiuse tra virgolette doppie possono contenere virgole e nuove righe senza fungere da delimitatori di record.
+ È possibile conservare le virgolette doppie ripetendole.
+ Le barre rovesciate (\$1) sono un altro modo per sfuggire ai caratteri speciali. Le barre rovesciate funzionano solo con altre barre rovesciate, virgolette doppie e con il separatore di campo configurato come virgola o barra verticale. Una barra rovesciata seguita da qualsiasi altro carattere viene rimossa automaticamente.
+ È possibile conservare le barre rovesciate ripetendole. Esempio: 

  ```
  path,size
  C:\\Program Files\\MyApp.exe,6534512
  ```
+ Le barre rovesciate che sfuggono alle virgolette doppie (`\"`) funzionano solo se sono incluse in coppia, quindi consigliamo di evitare le virgolette doppie ripetendole:. `""`
+ Se il numero di campi in una riga è **inferiore** al numero di campi nell'intestazione, Step Functions fornisce **stringhe vuote per i valori** mancanti.
+ Se il numero di campi in una riga è **superiore** al numero di campi nell'intestazione, Step Functions **salta** i campi aggiuntivi.

**Esempio di analisi di un file CSV di input**  
Supponiamo di aver fornito un file CSV denominato `myCSVInput.csv` che contiene una riga come input. Quindi, hai archiviato questo file in un bucket Amazon S3 denominato. `amzn-s3-demo-bucket` Il file CSV è il seguente.

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

La seguente macchina a stati legge questo file CSV e lo utilizza [ItemSelector (Mappa)](input-output-itemselector.md) per convertire i tipi di dati di alcuni campi.

```
{
  "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 si esegue questa macchina a stati, produce il seguente output.

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