Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
01-17-2020 10:31 PM
Bonjour,
J'ai ce warning:
MATCH ()-[r:LINK_TO]-() DELETE r;
CREATE CONSTRAINT ON (n:f4b1_com) ASSERT n.url IS UNIQUE;
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///f4b1_com_Links.csv" AS csvLine
MATCH (source:f4b1_com {url: csvLine.sourceUrl})
MERGE (target:f4b1_com {url: csvLine.targetUrl})
WITH source, target, csvLine
CALL apoc.create.relationship(source, "LINK_TO", NULL, target) YIELD rel
RETURN COUNT(rel);
DROP CONSTRAINT ON (n:f4b1_com) ASSERT n.url IS UNIQUE;
Le plan d’exécution étant le suivant:
Ma difficulté étant que je ne comprends pas le Warning sur Eager operator
et de là comment résoudre ce Warning.
Merci de votre aidie
Solved! Go to Solution.
01-18-2020 10:22 PM
Bonjour,
Pouvez vous essayer la requete suivante?
MATCH (:f4b1_com)-[r:LINK_TO]-(:f4b1_com) DELETE r;
CALL apoc.periodic.iterate(
CALL apoc.load.csv(
"file:///f4b1_com_Links.csv" ) yield map as row return row
','
MATCH (source:f4b1_com {url: row.sourceUrl})
MERGE (target:f4b1_com {url: row.targetUrl})
WITH source, target, csvLine
CALL apoc.create.relationship(source, "LINK_TO", NULL, target) YIELD rel
RETURN COUNT(rel);
‘, {batchSize:1000, iterateList:true, parallel:false});
Cordialement,
Jérémie
01-18-2020 10:22 PM
Bonjour,
Pouvez vous essayer la requete suivante?
MATCH (:f4b1_com)-[r:LINK_TO]-(:f4b1_com) DELETE r;
CALL apoc.periodic.iterate(
CALL apoc.load.csv(
"file:///f4b1_com_Links.csv" ) yield map as row return row
','
MATCH (source:f4b1_com {url: row.sourceUrl})
MERGE (target:f4b1_com {url: row.targetUrl})
WITH source, target, csvLine
CALL apoc.create.relationship(source, "LINK_TO", NULL, target) YIELD rel
RETURN COUNT(rel);
‘, {batchSize:1000, iterateList:true, parallel:false});
Cordialement,
Jérémie
01-19-2020 12:37 AM
Bonjour Jérémie,
Merci de ton aide. Voici le résultat sous Neo4j Browser. Plus de Warning!
J'ai corrigée un petite erreur (manquait un '
)
MATCH (:f4b1_com)-[r:LINK_TO]-(:f4b1_com) DELETE r;
CALL apoc.periodic.iterate(
'CALL apoc.load.csv("file:///f4b1_com_Links.csv") YIELD map AS row RETURN row
','
MATCH (source:f4b1_com {url: row.sourceUrl})
MERGE (target:f4b1_com {url: row.targetUrl})
WITH source, target, csvLine
CALL apoc.create.relationship(source, "LINK_TO", NULL, target) YIELD rel RETURN COUNT(rel);
', {batchSize:1000, iterateList:true, parallel:false});
De ce que je comprends de cette requête : Traitement batch de la requête Cypher avec un commit tous les 1000 enregistrements. Est ce bien cela ?
01-19-2020 01:24 AM
C'est exactement cela.
Vous pouvez aussi augmenter la taille des batchs, configurer le nombre de retries.
Je recommande vivement d'utiliser la derniere maintenance release et la derniere version d'apoc.
All the sessions of the conference are now available online