Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemples de requêtes utilisant le format CSV
Dans cet exemple, la requête renvoie le nombre de lignes d'un fichier CSV donné :
CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row RETURN count(row)
Vous pouvez exécuter l'exemple de requête à l'aide de l'opération execute-open-cypher-query dans le en exécutant le AWS CLI code suivant :
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
Une requête peut être flexible en ce qui concerne les lignes lues à partir d'un fichier CSV. Par exemple, la requête suivante crée un nœud avec un champ contenant des données provenant d'un fichier CSV :
CALL neptune.read( { source: "<s3 path>", format: "csv" } ) YIELD row CREATE (n {someField: row.someCol}) RETURN n
Avertissement
Il n'est pas considéré comme une bonne pratique d'utiliser une clause produisant des résultats volumineuse comme MATCH (n) avant une clause CALL. Cela conduirait à une requête de longue durée en raison d'un produit croisé entre les solutions entrantes des clauses précédentes et les lignes lues par neptune.read. Il est recommandé de démarrer la requête avec CALL neptune.read.
En-têtes de colonnes de propriétés
Vous pouvez spécifier une colonne (:) pour une propriété à l'aide de la syntaxe suivante. Les noms de type ne sont pas sensibles à la casse. Si un deux-points apparaît dans le nom d'une propriété, il faut l'éviter en le faisant précéder d'une barre oblique inverse :. \:
propertyname:type
Note
Les espaces, les virgules, les caractères de renvoi et les caractères de nouvelle ligne ne sont pas autorisés dans les en-têtes de colonne. Les noms de propriétés ne peuvent donc pas inclure ces caractères.
-
Vous pouvez spécifier une colonne pour un type de tableau en ajoutant
[]au type :propertyname:type[] -
Les propriétés d'arc ne peuvent avoir qu'une seule valeur et provoquent une erreur si un type de tableau ou une seconde valeur est spécifié. L'exemple suivant montre l'en-tête de colonne d'une propriété nommée age de type Int :
age:Int
Chaque ligne du fichier doit obligatoirement avoir un nombre entier dans cette position ou rester vide. Les tableaux de chaînes sont autorisés, mais les chaînes d'un tableau ne peuvent pas inclure le caractère point-virgule (;) à moins qu'il ne soit échappé à l'aide d'une barre oblique inverse (). \;
Types de colonnes CSV pris en charge
BOOL (ou BOOLEAN) - Valeurs autorisées : vrai, faux. Indique un champ booléen. Toute valeur autre que true sera traitée comme fausse.
FLOAT - Plage : virgule flottante IEEE 754 32 bits, y compris Infinity, INF, -Infinity, -INF et NaN (pas un nombre).
DOUBLE - Plage : virgule flottante IEEE 754 64 bits, y compris Infinity, INF, -Infinity, -INF et NaN (pas un nombre).
CHAÎNE -
Les guillemets sont facultatifs. Les caractères renvoyés par des virgules, des sauts de ligne et des calèches sont automatiquement échappés s'ils sont inclus dans une chaîne entourée de guillemets doubles («). Exemple : « Bonjour tout le monde ».
Pour inclure des guillemets dans une chaîne entre guillemets, vous pouvez éviter les guillemets en utilisant deux guillemets d'affilée : Exemple : « Hello «" World "».
Les tableaux de chaînes sont autorisés, mais les chaînes d'un tableau ne peuvent pas inclure le caractère point-virgule (;) à moins qu'il ne soit contourné par une barre oblique inverse (\ ;).
Si vous souhaitez placer des chaînes d'un tableau entre guillemets, vous devez entourer la totalité du tableau par un ensemble de guillemets. Exemple : « Chaîne 1 ; Chaîne 2 ; Chaîne 3 ».
DATE, DATETIME : les valeurs de date/heure peuvent être fournies au format XSD ou dans l'un des formats suivants :
aaaa- MM-dd
aaaa- MM-ddTHH:mm
aaaa- MM-ddTHH:mm:ss
aaaa- MM-ddTHH:mm:ssZ
aaaa- MM-ddTHH:mm:ss.SSSZ
aaaa- MM-ddTHH:mm:ss [+|-] hhmm
aaaa- MM-ddTHH:mm:ss.SSS [+|-] hhmm
ENTIER SIGNÉ -
Octet : -128 à 127
Courte : -32768 à 32767
Int : -2^31 à 2^31-1
Longue : -2^63 à 2^63-1
Neptune-specific types de colonnes :
Un type de colonne Any est pris en charge dans les colonnes utilisateur. Un type Any est un type « sucre syntaxique » pour tous les autres types que nous prenons en charge. C'est extrêmement utile si une colonne utilisateur contient plusieurs types. La charge utile d'une valeur de type Any est une liste de chaînes json comme suit :
{"value": "10", "type": "Int"};{"value": "1.0", "type": "Float"}, qui comporte un champ de valeur et un champ de type dans chaque chaîne json individuelle. L'en-tête de colonne d'un type Any est PropertyName:Any. La valeur de cardinalité d'une colonne Any est définie, ce qui signifie que la colonne peut accepter plusieurs valeurs.Neptune prend en charge les types suivants dans un type quelconque : Bool (ou booléen), Byte, Short, Int, Long,,, Float UnsignedByte, Double UnsignedShort UnsignedInt, Date UnsignedLong, DateTime, String et Geometry.
Le type vectoriel n'est pas pris en charge dans N'importe quel type.
Le type Nested Any n'est pas pris en charge. Par exemple,
{"value": {"value": "10", "type": "Int"}, "type": "Any"}.
Un type de colonne Geometry est pris en charge dans les colonnes utilisateur. La charge utile de ces colonnes ne doit contenir que des primitives de géométrie de type Point, fournies sous forme de chaînes au format Well-known texte (WKT). Par exemple, POINT (30 10) serait une valeur de géométrie valide.
Exemple de sortie CSV
Étant donné le fichier CSV suivant :
<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
Cet exemple montre la sortie renvoyée par neptune.read à l'aide de la requête suivante :
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 } }] }
Actuellement, il n'est pas possible de définir une étiquette de nœud ou de bord pour un champ de données provenant d'un fichier CSV. Il est recommandé de partitionner les requêtes en plusieurs requêtes, une pour chacune 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)