

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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

Um Apache TinkerPop Gremlin-Daten im CSV-Format zu laden, müssen Sie die Scheitelpunkte und Kanten in separaten Dateien angeben.

Der Loader kann in einem einzigen Ladeauftrag aus mehreren Vertex-Dateien und mehreren Edge-Dateien laden.

Für jeden Ladebefehl muss sich der Satz der Dateien, die geladen werden sollen, im selben Ordner im Amazon-S3-Bucket befinden. Sie geben den Ordnernamen für den Parameter `source` an. Die Dateinamen und -erweiterungen sind nicht wichtig.

Das Amazon-Neptune-CSV-Format entspricht der CSV-Spezifikation RFC 4180. Weitere Informationen finden Sie unter [Common Format and MIME Type for CSV Files](https://tools.ietf.org/html/rfc4180) auf der Internet Engineering Task Force (IETF)-Website.

**Anmerkung**  
Alle Dateien müssen im UTF-8-Format kodiert sein.

Jede Datei verfügt über eine durch Komma getrennte Kopfzeile. Die Kopfzeile besteht aus System- und Eigenschaftenspalten-Headern.

## Systemspalten-Header
<a name="bulk-load-tutorial-format-gremlin-systemheaders"></a>

Die erforderlichen und zulässigen Systemspalten-Header sind für Knoten- und Kantendateien unterschiedlich.

Jede Systemspalte kann nur einmal in einem Header enthalten sein.

Bei den Bezeichnungen muss die Groß- und Kleinschreibung beachtet werden.

**Knoten-Header**
+ `~id` – **Erforderlich**

  Eine ID für den Knoten.
+ `~label`

  Eine Bezeichnung für den Knoten. Es sind mehrere Bezeichnungswerte zulässig, getrennt durch Semikolon (`;`).

  Falls nicht vorhanden, `~label` wird eine TinkerPop Bezeichnung mit dem Wert bereitgestellt`vertex`, da jeder Scheitelpunkt mindestens eine Bezeichnung haben muss.

**Kanten-Header**
+ `~id` – **Erforderlich**

  Eine ID für die Kante.
+ `~from` – **Erforderlich**

  Die Knoten-ID des *von*-Knotens.
+ `~to` – **Erforderlich**

  Die Knoten-ID des *nach*-Knotens.
+ `~label`

  Eine Bezeichnung für die Kante. Kanten können immer nur eine Bezeichnung enthalten.

  Wenn nicht vorhanden, `~label` wird TinkerPop eine Bezeichnung mit dem Wert bereitgestellt`edge`, da jede Kante eine Bezeichnung haben muss.

## Eigenschaftenspalten-Header
<a name="bulk-load-tutorial-format-gremlin-propheaders"></a>

Sie können eine Spalte (`:`) für eine Eigenschaft angeben, indem Sie die folgende Syntax verwenden. Bei den Typnamen muss die Groß- und Kleinschreibung nicht berücksichtigt werden. Ein Doppelpunkt muss mit einem vorangestellten umgekehrten Schrägstrich maskiert werden, wenn er im Namen einer Eigenschaft erscheint: `\:`.

```
propertyname:type
```

**Anmerkung**  
Leerzeichen, Kommas, Zeilenumbrüche und Zeilenumbrüche sind in den Spaltenüberschriften nicht zulässig, sodass Eigenschaftsnamen diese Zeichen nicht enthalten dürfen.

Sie können eine Spalte für einen Array-Typ festlegen, indem Sie dem Typ `[]` hinzufügen:

```
propertyname:type[]
```

**Anmerkung**  
Edge-Eigenschaften können nur einen einzelnen Wert haben und verursachen einen Fehler, wenn ein Array-Typ oder ein zweiter Wert angegeben ist.

Das folgende Beispiel zeigt den Spalten-Header für eine Eigenschaft mit dem Namen `age` des Typs `Int`.

```
age:Int
```

Für jede Zeile in der Datei ist eine Ganzzahl in dieser Position erforderlich oder sie muss leer sein.

Zeichenfolgen-Arrays sind zulässig. Zeichenfolgen in einem Array dürfen jedoch kein Semikolon (`;`) enthalten, es sei denn, es wird mit einem umgekehrten Schrägstrich maskiert (wie hier: `\;`).

**Angeben der Kardinalität einer Spalte**

Die Spaltenüberschrift kann verwendet werden, um die *Kardinalität* für die durch die Spalte identifizierte Eigenschaft anzugeben. Auf diese Weise kann der Massen-Loader die Kardinalität ähnlich wie Gremlin-Abfragen berücksichtigen.

Sie geben die Kardinalität einer Spalte wie folgt an:

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

Der *cardinality* Wert kann entweder oder sein. `single` `set` Als Standardwert wird `set` angenommen, Dies bedeutet, dass die Spalte mehrere Werte akzeptieren kann. Bei Edge-Dateien ist die Kardinalität immer einzeln und die Angabe einer anderen Kardinalität bewirkt, dass der Loader eine Ausnahme auslöst.

Wenn die Kardinalität `single` lautet, gibt der Loader einen Fehler aus, wenn beim Laden eines Wertes bereits ein vorheriger Wert vorhanden ist oder wenn mehrere Werte geladen werden. Dieses Verhalten kann überschrieben werden, sodass ein vorhandener Wert ersetzt wird, wenn ein neuer Wert unter Verwendung des Flags `updateSingleCardinalityProperties` geladen wird. Siehe [Loader-Befehl](load-api-reference-load.md).

Es ist möglich, die Kardinalitätseinstellung mit einem Array-Typ zu vewenden, obwohl dies im Allgemeinen nicht erforderlich ist. Dies sind die möglichen Kombinationen:
+ `name:type`   –   Die Kardinalität ist `set` und der Inhalt ist einwertig.
+ `name:type[]`   –   Die Kardinalität ist `set` und der Inhalt ist mehrwertig.
+ `name:type(single)`   –   Die Kardinalität ist `single` und der Inhalt ist einwertig.
+ `name:type(set)`   –   Die Kardinalität ist `set`, was dem Standardwert entspricht, und der Inhalt ist einwertig.
+ `name:type(set)[]`   –   Die Kardinalität ist `set` und der Inhalt ist mehrwertig.
+ `name:type(single)[]`   –   Dies ist widersprüchlich und führt zu einem Fehler.

Im folgenden Abschnitt werden alle verfügbaren Gremlin-Datentypen aufgeführt.

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

Dies ist eine Liste der zulässigen Eigenschaftstypen mit einer Beschreibung des jeweiligen Typs.

**Bool (oder Boolesch)**  
Gibt ein boolesches Feld an. Zulässige Werte: `false`, `true`

**Anmerkung**  
Jeder andere Wert als `true` wird als „false“ behandelt.

**Ganzzahltypen**  
Werte außerhalb der definierten Bereiche verursachen einen Fehler.


| 
| 
| Typ | Bereich | 
| --- |--- |
| Byte | -128 bis \$1127 | 
| Short | -32768 bis \$132767 | 
| Int | -2^31 bis 2^31-1 | 
| Long | -2^63 bis 2^63-1 | 

**Dezimalzahltypen**  
Unterstützt sowohl die Dezimalschreibweise als auch die wissenschaftliche Notation. Außerdem können Symbole wie (\$1/-), Infinity oder NaN verwendet werden. INF wird nicht unterstützt.


| 
| 
| Typ | Bereich | 
| --- |--- |
| Gleitkommazahl | 32-Bit IEEE 754-Gleitkommawert | 
| Double | 64-Bit IEEE 754-Gleitkommawert | 

Zu lange Gleitkommazahlen und Double-Werte werden geladen und auf den nächsten Wert für 24-Bit- (Gleitkommazahl) und 53-Bit-Genauigkeit (Double) gerundet. Ein in der Mitte liegender Wert wird für die letzte verbleibende Stelle auf Bit-Ebene auf 0 gerundet.

**Zeichenfolge**  
Anführungszeichen sind optional. Kommas, Zeilenumbruch- und Wagenrücklaufzeichen werden automatisch mit Escape-Zeichen markiert, wenn sie in einer Zeichenfolge enthalten sind, die von doppelten Anführungszeichen (`"`) umschlossen ist. *Beispiel*: `"Hello, World"`

Um Anführungszeichen in einer in Anführungszeichen gesetzte Zeichenfolge aufzunehmen, können Sie das Anführungszeichen mit Escape-Zeichen markieren, indem Sie zwei in einer Zeile verwenden: *Beispiel:* `"Hello ""World"""`

Zeichenfolgen-Arrays sind zulässig. Zeichenfolgen in einem Array dürfen jedoch kein Semikolon (`;`) enthalten, es sei denn, es wird mit einem umgekehrten Schrägstrich maskiert (wie hier: `\;`).

Wenn Sie Zeichenfolgen in einem Array in Anführungszeichen setzen möchten, müssen Sie das gesamte Array mit einem Satz Anführungszeichen versehen. *Beispiel*: `"String one; String 2; String 3"`

**Date**  
Java-Datum im ISO 8601-Format. Unterstützt die folgenden Formate:`yyyy-MM-dd`,`yyyy-MM-ddTHH:mm`,`yyyy-MM-ddTHH:mm:ss`,`yyyy-MM-ddTHH:mm:ssZ`. Die Werte werden in Epochenzeit umgewandelt und gespeichert.

**DateTime**  
Java-Datum im ISO 8601-Format. Unterstützt die folgenden Formate:`yyyy-MM-dd`,, `yyyy-MM-ddTHH:mm``yyyy-MM-ddTHH:mm:ss`,`yyyy-MM-ddTHH:mm:ssZ`. Die Werte werden in Epochenzeit umgewandelt und gespeichert.

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

**Trennzeichen**  
Felder in einer Zeile werden durch ein Komma getrennt. Die Datensätze werden durch einen Zeilenumbruch oder einen Zeilenumbruch gefolgt von einem Wagenrücklauf getrennt.

**Leere Felder**  
Leere Felder sind für nicht erforderliche Spalten zulässig (z. B. benutzerdefinierte Eigenschaften). Ein leeres Feld erfordert dennoch ein Komma als Trennzeichen. Leere Felder in erforderlichen Spalten führen zu einem Analysefehler. Leere Zeichenkettenwerte werden als leerer Zeichenkettenwert für das Feld interpretiert, nicht als leeres Feld. Das Beispiel im nächsten Abschnitt enthält in jedem Beispielknoten ein leeres Feld.

**Scheitelpunkt IDs**  
`~id`-Werte müssen für alle Knoten in allen Knotendateien eindeutig sein. Mehrere Knotenzeilen mit identischen `~id`-Werten werden auf einen einzigen Knoten im Graph angewendet. Eine leere Zeichenfolge (`""`) ist eine gültige ID, und der Scheitelpunkt wird mit einer leeren Zeichenfolge als ID erstellt.

**Kante IDs**  
Darüber hinaus müssen `~id`-Werte für alle Kanten in allen Kantendateien eindeutig sein. Mehrere Kantenzeilen mit identischen `~id`-Werten werden auf die einzige Kante im Graph angewendet. Eine leere Zeichenfolge (`""`) ist eine gültige ID, und die Kante wird mit einer leeren Zeichenfolge als ID erstellt.

**Labels**  
Bei Labels wird zwischen Groß- und Kleinschreibung unterschieden und sie dürfen nicht leer sein. Ein Wert von `""` führt zu einem Fehler.

**Zeichenfolgenwerte**  
Anführungszeichen sind optional. Kommas, Zeilenumbruch- und Wagenrücklaufzeichen werden automatisch mit Escape-Zeichen markiert, wenn sie in einer Zeichenfolge enthalten sind, die von doppelten Anführungszeichen (`"`) umschlossen ist. Leere Zeichenkettenwerte `("")` werden als leerer Zeichenkettenwert für das Feld interpretiert, nicht als leeres Feld.

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

Das Neptune-CSV-Format entspricht der CSV-Spezifikation RFC 4180, einschließlich der folgenden Anforderungen.
+ Es werden sowohl Unix- als auch Windows-Zeilenenden unterstützt (\$1n oder \$1r\$1n).
+ Jedes Feld kann mit (doppelten) Anführungszeichen versehen werden.
+ Felder, die einen Zeilenumbruch, doppelte Anführungszeichen oder Kommas enthalten, müssen in Anführungszeichen gesetzt werden. (Andernfalls wird der Ladevorgang sofort abgebrochen.)
+ Eine doppeltes Anführungszeichen (`"`) in einem Feld muss durch zwei (doppelte) Anführungszeichen dargestellt werden. Beispiel: Eine Zeichenfolge `Hello "World"` muss als `"Hello ""World"""` in den Daten dargestellt werden.
+ Umgebende Leerzeichen zwischen Trennzeichen werden ignoriert. Wenn eine Zeile als vorhanden ist`value1, value2`, werden sie als `"value1"` und gespeichert`"value2"`.
+ Alle anderen Escapezeichen werden unverändert gespeichert. Zum Beispiel wird `"data1\tdata2"` als `"data1\tdata2"` gespeichert. Es sind keine weiteren Escapezeichen erforderlich, solange diese Zeichen in Anführungszeichen gesetzt sind.
+ Leere Felder sind zulässig. Ein leeres Feld wird als leerer Wert interpretiert.
+ Mehrere Werte für ein Feld werden mit einem Semikolon (`;`) zwischen den Werten angegeben.

Weitere Informationen finden Sie unter [Common Format and MIME Type for CSV Files](https://tools.ietf.org/html/rfc4180) auf der Internet Engineering Task Force (IETF)-Website.

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

Das folgende Diagramm zeigt ein Beispiel für zwei Scheitelpunkte und eine Kante aus dem TinkerPop Modern Graph.

![\[Diagramm mit zwei Vertices und einem Edge enthält Markos Alter 29 und die LOP-Software (sprachorientierte Programmierungssoftware) mit der Sprache Java\]](http://docs.aws.amazon.com/de_de/neptune/latest/userguide/images/tiny-modern-graph.png)


Die folgende Abbildung zeigt das Diagramm im Neptune-CSV-Ladeformat.

Knotendatei:

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

Tabellarische Ansicht der Knotendatei:

|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| \$1id | name:String | age:Int | lang:String | Interessen: Zeichenfolge [] | \$1label | 
| v1 | "marko" | 29 |  | ["Segeln“, „Graphen"] | Person | 
| v2 | "lop" |  | "java" |  | software | 

Kantendatei:

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

Tabellarische Ansicht der Kantendatei:

|  |  |  |  |  | 
| --- |--- |--- |--- |--- |
| \$1id | \$1from | \$1auf | \$1label | weight:Double | 
| e1 | v1 | v2 | created | 0.4 | 

**Nächste Schritte**  
Da Sie jetzt über ausführlichere Kenntnisse von Ladeformaten verfügen, fahren Sie mit [Beispiel: Laden von Daten in eine Neptune-DB-Instance](bulk-load-data.md) fort.