使用LOAD CSV在neo4j中加载不同类型的节点

使用LOAD CSV在neo4j中加载不同类型的节点,neo4j,Neo4j,我正在尝试使用加载CSV,但遇到了一些挑战。。。 我想根据csv类型中特定列的内容创建不同类型的节点 例如: ID,NAME,VALUE,LABEL,TYPE,KEY,GROUP,COLOR,SIZE,RECORDS,SCOPE 3,ERKRS_11CO,11CO,"Operating Concern 1122",ERKRS,ERKRS_11CO,EOI,#FF99CC,1,0,False 5,ERKRS_8500,8500,"IDES Australia and New Zealand",ER

我正在尝试使用加载CSV,但遇到了一些挑战。。。 我想根据csv类型中特定列的内容创建不同类型的节点

例如:

ID,NAME,VALUE,LABEL,TYPE,KEY,GROUP,COLOR,SIZE,RECORDS,SCOPE
3,ERKRS_11CO,11CO,"Operating Concern 1122",ERKRS,ERKRS_11CO,EOI,#FF99CC,1,0,False
5,ERKRS_8500,8500,"IDES Australia and New Zealand",ERKRS,ERKRS_8500,EOI,#FF99CC,1,0,False
21,KKBER_1000,1000,"Credit control area Europe",KKBER,KKBER_1000,EOI,#336699,1,0,False
329,KOKRS_1111,1111,"1111 CONTROLLING AREA IN",KOKRS,KOKRS_1111,EOI,#CC99FF,1,0,False
330,KOKRS_1112,1112,"US COMPANY",KOKRS,KOKRS_1112,EOI,#CC99FF,1,0,False
我首先尝试:

// Build Nodes
USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS 
FROM 'file:///mynodesfile.csv' AS line
CREATE (line.NAME:line.TYPE :ee { name: line.LABEL , color: line.COLOR, records: TOINT(line.RECORDS), scope: line.SCOPE } ) ;
这根本不起作用。然后我试着

USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS 
FROM 'file:///mynodesfile.csv' AS line
WITH line
CASE line.TYPE
    WHEN 'ERKRS' THEN
        CREATE (e:ERKRS { ID: TOINT(line.ID) } )
    WHEN 'KKBER' THEN
        CREATE (e:KKBER { ID: TOINT(line.ID) } )    
    WHEN 'KOKRS' THEN
        CREATE (e:KOKRS { ID: TOINT(line.ID) } )    

SET e.name = line.LABEL 
    e.color = line.COLOR
    e.records = TOINT(line.RECORDS)
    e.scope = line.SCOPE )
;
也不工作。。。。 然后我编写了一个python程序来生成cypher子句。因为实际的文件比我给出的示例要大得多,所以我尝试使用 cat mynodes.cql |/bin/cypher-shell.bat-u yourneo4juser-p yourspassword 我用的是Windows,所以我用的是power shell

mynodes.cql前4条记录

USING PERIODIC COMMIT 500
CREATE (ROOT_EC3_800:ROOT:eoi { name: "Enterprise", records: 0, scope: "False"} )
CREATE (ERKRS_11CO:ERKRS:eoi { name: "Operating Concorn 1122", records: 0, scope: "False"} )
CREATE (ERKRS_8500:ERKRS:eoi { name: "IDES Australia and New Zealand", records: 0, scope: "False"} )
输入“C”无效:应为空白、注释或LoadCSVQuery第2行第1列偏移量:26 创建根目录\u EC3\u 800:ROOT:eoi{name:Enterprise,记录:0,作用域:False}

然而,进入 创建ROOT_EC3_800:ROOT:eoi{name:Enterprise,记录:0,作用域:False}在neo4j浏览器中,创建节点

我正在努力使这项工作顺利进行。感谢您的帮助。

使用定期提交的指令仅适用于LOAD CSV命令,这就是您在生成的脚本上收到错误的原因

回答第一个问题,问题是在纯密码中,标签和关系类型不能是动态的。 因此,如果要创建带有动态标签的节点,必须将APOC与APOC.create.node过程一起使用,如下所示:

USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS 
FROM 'file:///mynodesfile.csv' AS line
CALL apoc.create.node([line.TYPE, 'eoi'], { name: line.LABEL , color: line.COLOR, records: TOINT(line.RECORDS), scope: line.SCOPE } ) ;

干杯。

谢谢@logisima!非常感谢:。顺便说一句,我添加了“收益节点-回报节点”,效果非常好。