

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à.

# Formato dati di caricamento Gremlin
<a name="bulk-load-tutorial-format-gremlin"></a>

Per caricare i dati di Apache TinkerPop Gremlin utilizzando il formato CSV, è necessario specificare i vertici e gli spigoli in file separati.

Lo strumento di caricamento è in grado di caricare da più file vertex e da più file edge in un singolo processo di caricamento.

Per ciascun comando di caricamento, il set di file da caricare deve trovarsi nella stessa cartella nel bucket Amazon S3 ed è necessario specificare il nome della cartella per il parametro `source`. I nomi file e le relative estensioni non sono importanti.

Il formato CSV Amazon Neptune segue la specifica CSV RFC 4180. Per ulteriori informazioni, vedi [Common Format and MIME Type for CSV Files](https://tools.ietf.org/html/rfc4180) nel sito Web Internet Engineering Task Force (IETF).

**Nota**  
Tutti i file devono essere codificati in formato UTF-8.

Ogni file ha una riga di intestazione separata da virgola. La riga di intestazione è costituita da intestazioni di colonna di sistema e da intestazioni di colonna delle proprietà.

## Intestazioni di colonna di sistema
<a name="bulk-load-tutorial-format-gremlin-systemheaders"></a>

Le intestazioni di colonna di sistema necessarie e consentite sono diverse per i file di vertice e i file di edge.

Ogni colonna di sistema può essere presente una sola volta in un'intestazione.

Per tutte le etichette viene fatta distinzione tra maiuscole e minuscole.

**Intestazioni vertici**
+ `~id` - **Campo obbligatorio**

  Un ID per il vertice.
+ `~label`

  Un'etichetta per il vertice. Sono consentiti più valori di etichetta, separati da punto e virgola (`;`).

  Se non `~label` è presente, TinkerPop fornisce un'etichetta con il valore`vertex`, poiché ogni vertice deve avere almeno un'etichetta.

**Intestazioni edge**
+ `~id` - **Campo obbligatorio**

  Un ID per l'edge.
+ `~from` - **Campo obbligatorio**

  L'ID del vertice *from*.
+ `~to` - **Campo obbligatorio**

  L'ID del vertice *to*.
+ `~label`

  Un'etichetta per l'edge. Gli edge possono avere solo un'etichetta singola.

  Se non `~label` è presente, TinkerPop fornisce un'etichetta con il valore`edge`, perché ogni bordo deve avere un'etichetta.

## Intestazioni di colonna delle proprietà
<a name="bulk-load-tutorial-format-gremlin-propheaders"></a>

È possibile specificare una colonna (`:`) per una proprietà utilizzando la sintassi seguente. Per i nomi dei tipi non viene fatta distinzione tra maiuscole e minuscole. Tenere presente, tuttavia, che se all'interno del nome di una proprietà compaiono i due punti, è necessario che siano preceduti da una barra rovesciata: `\:`.

```
propertyname:type
```

**Nota**  
Lo spazio, la virgola, il ritorno a destra e i caratteri di nuova riga non sono consentiti nelle intestazioni delle colonne, pertanto i nomi delle proprietà non possono includere questi caratteri.

È possibile specificare una colonna per un tipo di matrice aggiungendo `[]` al tipo:

```
propertyname:type[]
```

**Nota**  
Le proprietà edge possono avere solo un singolo valore e verrà generato un errore se viene specificato un tipo di array o un secondo valore.

L'esempio seguente mostra l'intestazione di colonna per una proprietà denominata `age` del tipo `Int`.

```
age:Int
```

Ogni riga del file dovrà avere un valore intero in quella posizione o essere lasciata vuota.

Sono consentiti array di stringhe, ma le stringhe in un array non possono includere il carattere punto e virgola (`;`) a meno che non venga preceduto da una barra rovesciata (come in questo caso :`\;`).

**Specifica la cardinalità di una colonna**

L'intestazione della colonna può essere utilizzata per specificare la *cardinalità* per la proprietà identificata dalla colonna. Ciò permette allo strumento di caricamento in blocco di rispettare la cardinalità allo stesso modo delle query Gremlin.

Per specificare la cardinalità di una colonna:

```
propertyname:type(cardinality)
```

Il *cardinality* valore può essere o. `single` `set` L'impostazione predefinita presunta è `set`; ciò significa che la colonna può accettare valori multipli. Nel caso di file edge, la cardinalità è sempre singola e specificare qualsiasi altra cardinalità fa sì che lo strumento di caricamento generi un'eccezione.

Se la cardinalità è `single`, lo strumento di caricamento genera un errore se un valore precedente è già presente quando viene caricato un valore oppure se vengono caricati più valori. Questo comportamento può essere sovrascritto in modo che un valore esistente venga sostituito quando un nuovo valore viene caricato usando il flag `updateSingleCardinalityProperties`. Per informazioni, consulta [Comando dello strumento di caricamento](load-api-reference-load.md).

È possibile utilizzare una cardinalità impostando un tipo di matrice, anche se non è generalmente necessario. Di seguito sono elencate le combinazioni possibili:
+ `name:type`: la cardinalità è `set` e il contenuto è a valore singolo.
+ `name:type[]`: la cardinalità è `set` e il contenuto ha valori multipli.
+ `name:type(single)`: la cardinalità è `single` e il contenuto è a valore singolo.
+ `name:type(set)`: la cardinalità è `set`, corrispondente al valore predefinito; il contenuto è a valore singolo.
+ `name:type(set)[]`: la cardinalità è `set` e il contenuto ha valori multipli.
+ `name:type(single)[]`: questa combinazione è contraddittoria e provoca un errore.

Nella sezione seguente sono elencati tutti i tipi di dati Gremlin disponibili.

## Tipi di dati Gremlin
<a name="bulk-load-tutorial-format-gremlin-datatypes"></a>

Si tratta di un elenco dei tipi di proprietà consentiti, con una descrizione per ognuno di essi.

**Bool (o Booleano)**  
Indica un campo Booleano. Valori consentiti: `false`, `true`

**Nota**  
Qualsiasi valore diverso da `true` verrà trattato come false.

**Tipi Numero intero**  
I valori al di fuori degli intervalli definiti determinano un errore.


| 
| 
| Tipo | Intervallo | 
| --- |--- |
| Byte | Da -128 a 127 | 
| Breve | Da -32768 a 32767 | 
| Int | Da -2^31 a 2^31-1 | 
| Lungo | Da -2^63 a 2^63-1 | 

**Tipi Numero decimale**  
Supporta la notazione sia decimale sia scientifica. Inoltre, consente simboli come (\$1/-) Infinity o NaN. INF non è supportato.


| 
| 
| Tipo | Range | 
| --- |--- |
| Float | A virgola mobile a 32 bit IEEE 754 | 
| Double | A virgola mobile a 64 bit IEEE 754 | 

I valori float e doppi che sono troppo lunghi vengono caricati e arrotondati al valore più vicino per 24 bit (float) e 53 bit (doppi). Un valore medio viene arrotondato a 0 per le ultime cifre rimanenti a livello di bit.

**Stringa**  
Le virgolette sono facoltative. Per virgole, nuova riga e ritorno a capo viene automaticamente inserito un carattere di escape, se sono inclusi in una stringa racchiusa tra virgolette doppie (`"`). *Esempio*: `"Hello, World"`

Per includere le virgolette in una stringa tra virgolette, è possibile inserire il carattere di escape per le virgolette utilizzandone due consecutivi: *Esempio:* `"Hello ""World"""`

Sono consentiti array di stringhe, ma le stringhe in un array non possono includere il carattere punto e virgola (`;`) a meno che non venga preceduto da una barra rovesciata (come in questo caso :`\;`).

Se desideri racchiudere le stringhe in una matrice con le virgolette, devi racchiudere l'intera matrice con una serie di virgolette. *Esempio*: `"String one; String 2; String 3"`

**Data**  
Data Java i formato ISO-8601. Supporta i seguenti formati:`yyyy-MM-dd`,`yyyy-MM-ddTHH:mm`,`yyyy-MM-ddTHH:mm:ss`,`yyyy-MM-ddTHH:mm:ssZ`. I valori vengono convertiti in ora epocale e memorizzati.

**Datetime**  
Data Java i formato ISO-8601. Supporta i seguenti formati:`yyyy-MM-dd`,, `yyyy-MM-ddTHH:mm``yyyy-MM-ddTHH:mm:ss`,`yyyy-MM-ddTHH:mm:ssZ`. I valori vengono convertiti in ora epocale e memorizzati.

## Formato di riga Gremlin
<a name="bulk-load-tutorial-format-gremlin-rowformat"></a>

**Delimitatori**  
I campi in una riga sono separati da una virgola. I record sono separati da una nuova riga o da una nuova riga seguita da un ritorno a capo.

**Campi vuoti**  
I campi vuoti sono consentiti per le colonne non obbligatorie (ad esempio le proprietà definite dall'utente). Un campo vuoto richiede comunque un separatore virgola. I campi vuoti nelle colonne obbligatorie genereranno un errore di analisi. I valori di stringa vuoti vengono interpretati come valori di stringa vuoti per il campo e non come campi vuoti. L'esempio nella sezione successiva presenta un campo vuoto in ciascun vertice.

**Vertice IDs**  
I valori `~id` devono essere univoci per tutti i vertici in ogni file di vertici. A un singolo vertice nel grafo vengono applicate più righe di vertice con valori `~id` identici. La stringa vuota (`""`) è un id valido e il vertice viene creato con una stringa vuota come id.

**Spigolo IDs**  
I valori `~id` devono essere univoci anche per tutti gli edge in ogni file di edge. All'unico edge nel grafo vengono applicate più righe di edge con valori `~id` identici. La stringa vuota (`""`) è un ID valido e il bordo viene creato con una stringa vuota come id.

**Etichette**  
Le etichette distinguono tra maiuscole e minuscole e non possono essere vuote. Un valore di `""` genererà un errore.

**Valori delle stringhe**  
Le virgolette sono facoltative. Per virgole, nuova riga e ritorno a capo viene automaticamente inserito un carattere di escape, se sono inclusi in una stringa racchiusa tra virgolette doppie (`"`). I valori di stringa vuoti `("")` vengono interpretati come un valore di stringa vuoto per il campo e non come un campo vuoto.

## Specifica del formato CSV
<a name="bulk-load-tutorial-format-csv-info"></a>

Il formato CSV Neptune segue le specifiche CSV RFC 4180, inclusi i seguenti requisiti.
+ Sono supportate le terminazioni di riga di entrambi gli stili, Unix e Windows (\$1 n o\$1r\$1n).
+ Qualsiasi campo può essere racchiuso tra virgolette (doppie).
+ I campi contenenti un'interruzione di riga, virgolette doppie o virgole devono essere racchiusi tra virgolette (in caso contrario, il caricamento viene interrotto immediatamente).
+ Un carattere virgolette doppie (`"`) in un campo deve essere rappresentato da due (doppi) caratteri. Ad esempio, una stringa `Hello "World"` deve essere presente nei dati come `"Hello ""World"""`.
+ Gli spazi circostanti tra i delimitatori vengono ignorati. Se una riga è presente come`value1, value2`, vengono archiviati come `"value1"` e`"value2"`.
+ Tutti gli altri caratteri di escape vengono archiviati integralmente. Ad esempio, `"data1\tdata2"` viene archiviato come `"data1\tdata2"`. Se i caratteri sono racchiusi tra virgolette, non sono necessari ulteriori caratteri di escape.
+ Sono consentiti campi vuoti. Un campo vuoto viene considerato come un valore vuoto.
+ Per separare più valori per un campo viene utilizzato il punto e virgola (`;`).

Per ulteriori informazioni, vedi [Common Format and MIME Type for CSV Files](https://tools.ietf.org/html/rfc4180) nel sito Web Internet Engineering Task Force (IETF).

## Esempio Gremlin
<a name="bulk-load-tutorial-format-gremlin-example"></a>

Il diagramma seguente mostra un esempio di due vertici e uno spigolo presi dal TinkerPop Modern Graph.

![\[Diagramma che mostra due vertici e un edge, contiene marko age 29 e lop software con lang: java.\]](http://docs.aws.amazon.com/it_it/neptune/latest/userguide/images/tiny-modern-graph.png)


Di seguito è riportato il grafo nel formato di caricamento CSV Neptune.

File del vertice:

```
~id,name:String,age:Int,lang:String,interests:String[],~label
v1,"marko",29,,"sailing;graphs",person
v2,"lop",,"java",,software
```

Vista tabulare del file del vertice:

|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| \$1id | name:String | age:Int | lang:String | Interessi: string [] | \$1label | 
| v1 | "marko" | 29 |  | ["navigazione», «grafici"] | person | 
| v2 | "lop" |  | "java" |  | software | 

File di edge:

```
~id,~from,~to,~label,weight:Double
e1,v1,v2,created,0.4
```

Vista tabulare del file di edge:

|  |  |  |  |  | 
| --- |--- |--- |--- |--- |
| \$1id | \$1from | \$1to | \$1label | weight:Double | 
| e1 | v1 | v2 | creato | 0.4 | 

**Fasi successive**  
Ora che hai una maggiore conoscenza dei formati di caricamento, vedi [Esempio: caricamento di dati in un'istanza database Neptune](bulk-load-data.md).