CREATE paramètre ...

17 views
Skip to first unread message

Pascal Négros

unread,
Mar 17, 2017, 5:00:38 AM3/17/17
to Neo4jFr
le CREATE standard est quelque chose comme CREATE (e:<nomEntité> {<nomPropriété> : <valeur>, ..... })
nous cherchons à charger un modèle et ses instances à partir d'un fichier externe (CSV pour commencer, mais JSON par la suite) qui contient des "couples" <nomEntité>, {<nomPropriété> : <valeur>, ..... }

est-il possible de lancer un CREATE (a { b })  ou a est une variable correspondant à "e:<nomEntité>" et b correspondant à "<nomPropriété> : <valeur>, ...." ?

Sylvain Roussy

unread,
Apr 5, 2017, 9:54:34 AM4/5/17
to Neo4jFr
Bonjour,

Je commence par clarifier, j'écrirais votre syntaxe ainsi :

 CREATE (identificateur:<Label> {<nomPropriété> : <valeur>, ..... })

L'identificateur est arbitraire, il permet de manipuler le noeud à l'intérieur de la requête. Il n'existe, du moins pas à ma connaissance, pas de moyen de le rendre paramétrable.
Le label non plus ne peut pas être paramétrable, Cypher attend une valeur littérale.
La Map {<nomPropriété> : <valeur>, ...} est quant à elle paramétrable.

Par paramétrable je pense à votre notion de variable.

Pour la Map il est envisageable de faire cela :

WITH {prop:"value"} as MyMap 
CREATE (n:MonLabel) 
SET n=MyMap 
RETURN n

Pour le label, il faut utiliser une procédure Apoc (un plugin à installer, disponible depuis la version 3.0.0) :

CREATE (n)
WITH n,['MonLabel'] as DynLabels
CALL apoc.create.setLabels(n,DynLabels) YIELD node
RETURN node

Quoiqu'il en soit, il y a fort à parier que la procédure Apoc d'export :

CALL apoc.export.cypherAll("exports/monexport.cql",null)

Puisse vous donner des pistes sur ce que vous recherchez (à moins que je ne sois à côté de la plaque).

Bonne journée,

Sylvain


Reply all
Reply to author
Forward
0 new messages