Neo4j Cypher - 使用LOAD CSV创建节点和设置标签 [英] Neo4j Cypher - creating nodes and setting labels with LOAD CSV

查看:3417
本文介绍了Neo4j Cypher - 使用LOAD CSV创建节点和设置标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用LOAD CSV创建节点,并将标签设置为CSV中的值。那可能吗?我试着像:

  LOAD CSV WITH HEADERS FROM'file:///testfile.csv'AS line 
CREATE(x:line.label)

...但我得到一个无效的语法错误。有没有办法做到这一点?

解决方案

bicpence,



首先,这是一个很容易做的Java批量导入应用程序,他们不难写。请参见批量插入器示例。您可以使用 opencsv 读取CSV文件。



如果你宁愿坚持使用Cypher,如果你有一组有限的标签,那么你可以这样做:

  USING PERIODIC COMMIT 1000 
LOAD CSV WITH HEADERS FROM'file:///testfile.csv'AS LINE
CREATE(n:load {lab:line.label,prop:line.prop });

CREATE INDEX ON:load(lab);

MATCH(n:load {lab:'label1'})
SET n:label1
REMOVE n:load
REMOVE n.lab;

MATCH(n:load {lab:'label2'})
SET n:label2
REMOVE n:load
REMOVE n.lab;

恩典与和平,



/ p>

I’m trying to use LOAD CSV to create nodes with the labels being set to values from the CSV. Is that possible? I’m trying something like:

LOAD CSV WITH HEADERS FROM 'file:///testfile.csv' AS line
CREATE (x:line.label)

...but I get an invalid syntax error. Is there any way to do this?

解决方案

bicpence,

First off, this is pretty easy to do with a Java batch import application, and they aren't hard to write. See this batch inserter example. You can use opencsv to read your CSV file.

If you would rather stick with Cypher, and if you have a finite set of labels to work with, then you could do something like this:

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:///testfile.csv' AS LINE
CREATE (n:load {lab:line.label, prop:line.prop});

CREATE INDEX ON :load(lab);

MATCH (n:load {lab:'label1'})
SET n:label1
REMOVE n:load
REMOVE n.lab;

MATCH (n:load {lab:'label2'})
SET n:label2
REMOVE n:load
REMOVE n.lab;

Grace and peace,

Jim

这篇关于Neo4j Cypher - 使用LOAD CSV创建节点和设置标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆