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 execute-open-cypher-query Operation in ausführen, AWS CLI indem Sie den 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 flexibel mit Zeilen umgehen, die aus einer CSV-Datei gelesen werden. Die folgende Abfrage erstellt beispielsweise einen Knoten mit einem Feld, das auf Daten aus einer CSV-Datei festgelegt ist:
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 Ergebnisklausel 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 ein Doppelpunkt in einem Eigenschaftsnamen vorkommt, muss ihm ein umgekehrter Schrägstrich vorangestellt werden:. \:
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[] -
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 namens 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 true wird als falsch behandelt.
FLOAT — Bereich: 32-Bit-Gleitkommazahl nach IEEE 754, einschließlich Infinity, INF, -Infinity, -INF und NaN (). not-a-number
DOUBLE - Bereich: 64-Bit-IEEE 754-Gleitkommazahl einschließlich Infinity, INF, -Infinity, -INF und NaN (). not-a-number
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: „Hello, World“.
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" "“.
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).
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 [+|-] hhmm
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
Neptun-spezifische Spaltentypen:
In den Benutzerspalten wird der Spaltentyp Any unterstützt. Ein Any-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 beliebigen Typs 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 UnsignedByte UnsignedShort, Double UnsignedInt UnsignedLong, Date, dateTime, String und Geometry.
Der Vektortyp wird in Any Type nicht unterstützt.
Verschachtelt Jeder Typ wird nicht unterstützt. Beispiel,
{"value": {"value": "10", "type": "Int"}, "type": "Any"}.
In den Benutzerspalten wird der Spaltentyp Geometrie unterstützt. Die Nutzdaten dieser Spalten dürfen nur Geometrie-Primitive des Typs Point enthalten, die als Zeichenketten im WKT-Format (Wellknown Text) bereitgestellt werden. Beispielsweise wäre POINT (30 10) 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 Ausgabe, die von neptune.read mit der folgenden Abfrage zurückgegeben wurde:
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 partitionieren, eine für jedes Label/jeden Typ.
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)