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.
Beispiele für Abfragen mit CSV
In diesem Beispiel gibt die Abfrage die Anzahl der Zeilen in einer bestimmten CSV-Datei zurück:
CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row RETURN count(row)
Sie können das Abfragebeispiel mithilfe der Operation execute-open-cypher-query in der ausführen, indem Sie den AWS CLI folgenden Code ausführen:
aws neptunedata execute-open-cypher-query \ --open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row RETURN count(row)" \ --endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
Eine Abfrage kann in Bezug auf Zeilen, die aus einer CSV-Datei gelesen werden, flexibel sein. Die folgende Abfrage erstellt beispielsweise einen Knoten mit einem Feld, das Daten aus einer CSV-Datei enthält:
CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row CREATE (n {someField: row.someCol}) RETURN n
Warnung
Es wird nicht als gute Praxis angesehen, vor einer CALL-Klausel eine umfangreiche, ergebnisgenerierende Klausel wie MATCH (n) zu verwenden. Dies würde aufgrund eines Kreuzprodukts zwischen eingehenden Lösungen aus früheren Klauseln und den von neptune.read gelesenen Zeilen zu einer lang andauernden Abfrage führen. Es wird empfohlen, die Abfrage mit CALL neptune.read zu starten.
Eigenschaftsspaltenüberschriften
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. Wenn in einem Eigenschaftsnamen ein Doppelpunkt vorkommt, muss dieser maskiert werden, indem ihm ein umgekehrter Schrägstrich vorangestellt wird:. \:
propertyname:type
Anmerkung
Leerzeichen, Kommas, Zeilenumbrüche und Zeilenumbrüche sind in den Spaltenüberschriften nicht zulässig, daher dürfen Eigenschaftsnamen diese Zeichen nicht enthalten.
-
Sie können eine Spalte für einen Array-Typ festlegen, indem Sie dem Typ
[]hinzufügen:propertyname:type[] -
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 die Spaltenüberschrift für eine Eigenschaft mit dem Namen age vom Typ Int:
age:Int
Für jede Zeile in der Datei ist eine Ganzzahl in dieser Position erforderlich oder sie muss leer sein. Zeichenkettenarrays sind zulässig, aber Zeichenketten in einem Array dürfen das Semikolon (;) nicht enthalten, es sei denn, es wird mit einem umgekehrten Schrägstrich () maskiert. \;
Unterstützte CSV-Spaltentypen
BOOL (oder BOOLEAN) — Zulässige Werte: true, false. Gibt ein boolesches Feld an. Jeder andere Wert als wahr wird als falsch behandelt.
FLOAT — Bereich: 32-Bit-IEEE 754-Gleitkomma einschließlich Infinity, INF, -Infinity, -INF und NaN (keine Zahl).
DOUBLE — Bereich: 64-Bit-IEEE-754-Gleitkomma einschließlich Infinity, INF, -Infinity, -INF und NaN (keine Zahl).
ZEICHENFOLGE -
Anführungszeichen sind optional. Kommas, Zeilenumbrüche und Zeilenumbrüche werden automatisch maskiert, wenn sie in einer Zeichenfolge enthalten sind, die von doppelten Anführungszeichen („) umgeben ist. Beispiel: „Hallo, Welt“.
Um Anführungszeichen in eine Zeichenfolge in Anführungszeichen einzufügen, können Sie das Anführungszeichen umgehen, indem Sie zwei in einer Reihe verwenden: Beispiel: „Hello „" World" "“.
Zeichenketten sind zulässig, aber Zeichenketten in einem Array dürfen das Semikolon (;) nicht enthalten, es sei denn, es wird mit einem umgekehrten Schrägstrich (\;) maskiert.
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: „Zeichenfolge eins; Zeichenfolge 2; Zeichenfolge 3".
DATE, DATETIME — Die Datetime-Werte können entweder im XSD-Format oder in einem der folgenden Formate bereitgestellt werden:
yyyy- MM-dd
yyyy- MM-ddTHH:mm
yyyy- MM-ddTHH:mm:ss
yyyy- MM-ddTHH:mm:ssZ
yyyy- MM-ddTHH:mm:ss.SSSZ
yyyy- MM-ddTHH:mm:ss [+|-] hmm
yyyy- MM-ddTHH:mm:ss.SSS [+|-] hhmm
GANZZAHL MIT VORZEICHEN -
Byte: -128 bis 127
Kurz: -32768 bis 32767
Int: -2^31 bis 2^31-1
Lang: -2^63 bis 2^63-1
Neptune-specific Spaltentypen:
Der Spaltentyp Beliebig wird in den Benutzerspalten unterstützt. Ein beliebiger Typ ist ein Typ „syntaktischer Zucker“ für alle anderen Typen, die wir unterstützen. Es ist äußerst nützlich, wenn eine Benutzerspalte mehrere Typen enthält. Die Nutzlast eines Werts vom Typ Any ist eine Liste von JSON-Zeichenfolgen wie folgt:
{"value": "10", "type": "Int"};{"value": "1.0", "type": "Float"}, die in jeder einzelnen JSON-Zeichenfolge ein Wertfeld und ein Typfeld enthält. Die Spaltenüberschrift eines Typs „Any“ lautet PropertyName:Any. Der Kardinalitätswert einer Any-Spalte ist festgelegt, was bedeutet, dass die Spalte mehrere Werte akzeptieren kann.Neptune unterstützt die folgenden Typen in einem beliebigen Typ: Bool (oder Boolean), Byte, Short, Int, Long,,,, Float, Double UnsignedByte UnsignedShort, Date UnsignedInt UnsignedLong, DateTime, String und Geometry.
Der Vektortyp wird in Any nicht unterstützt.
Verschachtelt Jeder Typ wird nicht unterstützt. Beispiel,
{"value": {"value": "10", "type": "Int"}, "type": "Any"}.
Ein Geometrie-Spaltentyp wird in den Benutzerspalten unterstützt. Die Nutzdaten dieser Spalten dürfen nur Geometrie-Grundelemente des Typs Point enthalten, die als Zeichenfolgen im Well-known Textformat (WKT) bereitgestellt werden. POINT (30 10) wäre beispielsweise ein gültiger Geometriewert.
Beispiel für eine CSV-Ausgabe
Angesichts der folgenden CSV-Datei:
<s3 path> colA:byte,colB:short,colC:int,colD:long,colE:float,colF:double,colG:string -128,-32768,-2147483648,-9223372036854775808,1.23456,1.23457,first 127,32767,2147483647,9223372036854775807,nan,nan,second 0,0,0,0,-inf,-inf,third 0,0,0,0,inf,inf,fourth
Dieses Beispiel zeigt die von neptune.read zurückgegebene Ausgabe mit der folgenden Abfrage:
aws neptunedata execute-open-cypher-query \ --open-cypher-query "CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row RETURN row" \ --endpoint-url https://my-cluster-name.cluster-abcdefgh1234.us-east-1.neptune.amazonaws.com:8182
{ "results": [{ "row": { "colD": -9223372036854775808, "colC": -2147483648, "colE": 1.23456, "colB": -32768, "colF": 1.2345699999999999, "colG": "first", "colA": -128 } }, { "row": { "colD": 9223372036854775807, "colC": 2147483647, "colE": "NaN", "colB": 32767, "colF": "NaN", "colG": "second", "colA": 127 } }, { "row": { "colD": 0, "colC": 0, "colE": "-INF", "colB": 0, "colF": "-INF", "colG": "third", "colA": 0 } }, { "row": { "colD": 0, "colC": 0, "colE": "INF", "colB": 0, "colF": "INF", "colG": "fourth", "colA": 0 } }] }
Derzeit gibt es keine Möglichkeit, einem Datenfeld, das aus einer CSV-Datei stammt, eine Knoten- oder Kantenbeschriftung zuzuweisen. Es wird empfohlen, die Abfragen in mehrere Abfragen zu unterteilen, eine für jede label/type.
CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row WHERE row.`~label` = 'airport' CREATE (n:airport) CALL neptune.read({source: '<s3 path>', format: 'csv'}) YIELD row WHERE row.`~label` = 'country' CREATE (n:country)