2013-03-26 7 views
1

J'ai chargé des données dans la base de données de graphes neo4j en utilisant l'importateur par lots. Maintenant, si je dois charger plus de données, puis-je garder une trace de ce qui a été inséré en externe ou des fonctionnalités standard de neo4j qui peuvent être utilisées pour:plusieurs charges dans neo4j

1) obtenir l'identifiant du dernier nœud inséré que je connais l'identifiant du nouveau noeud qui doit être inséré et indexé en conséquence. 2) obtenir la liste des noeuds déjà présents dans la base de données pour pouvoir vérifier l'unicité des noeuds qui vont être insérés. Si un noeud existe déjà dans la base de données, j'utiliserai simplement le même identifiant et ne créerai pas de nouveau noeud. 3) vérifier l'unicité des triplets - supposons qu'un triplet "January Month is_a" est déjà présent dans la base de données neo4j et disons que les nouvelles données que je veux insérer ont aussi le même triplet, je ne voudrais pas l'insérer car cela me donnera des résultats en double.

Par exemple: si vous ajoutez les données suivantes dans la base de données graphique Neo4j à l'aide par lots importateur: https://github.com/jexp/batch-import

$ cat nodes.csv 
name age works_on 
Michael 37 neo4j 
Selina 14 
Rana 6 
Selma 4 

$ cat nodes_index.csv 
0 name age works_on 
1 Michael 37 neo4j 
2 Selina 14 
3 Rana 6 
4 Selma 4 

$ cat rels.csv 
start end type since counter:int 
1 2 FATHER_OF 1998-07-10 1 
1 3 FATHER_OF 2007-09-15 2 
1 4 FATHER_OF 2008-05-03 3 
3 4 SISTER_OF 2008-05-03 5 
2 3 SISTER_OF 2007-09-15 7 

Maintenant, si vous devez ajouter des données à la même base de données, vous aurez besoin de savoir les choses suivantes :

1) si les noeuds existent déjà, quels sont leurs identifiants pour pouvoir les utiliser lors de la création d'un triplet, sinon créez une liste de ces noeuds (pas dans la base de données) et démarrez à partir d'un id qui n'a pas été utilisé lors de la dernière importation et l'utiliser comme ID de départ pour créer un nouveau nodes_index.csv

2) s'il existe déjà un triplet dans la base de données, ne créez pas de nouveau ce triplet car cela entraînera un résultat en double lors de l'exécution de requêtes chiffrées sur la base de données.

Il semble que même question a été soulevée ici aussi: https://github.com/jexp/batch-import/issues/27

Merci!

Répondre

0

1- pourquoi vous devez savoir dernier id noeud .. vous n'avez pas besoin de connaître l'identifiant d'insérer le nouveau nœud il ajouté automatiquement dans le premier id libre dans le graphique

2 pour l'unicité, pourquoi vous n'utilisez pas créer une requête unique "pour les nœuds et les relations ainsi"

ici, vous pouvez consulter les références: http://docs.neo4j.org/chunked/1.8/cypher-query-lang.html

Questions connexes