csv - Neo4j 密码 : MERGE conditionally with values from LOAD CSV

标签 csv neo4j cypher

我正在尝试从 CSV 导入,其中有些行有帐号,有些则没有。如果帐户确实有号码,我想使用它们进行合并:会有一些记录,其中帐户的名称已更改,但号码将始终保持不变。对于没有帐号的其他记录,我能做的最好的就是合并帐户名称。

所以我真的需要某种条件:如果一行有帐号,则合并该帐号,否则合并帐号名称。类似...

LOAD CSV WITH HEADERS FROM 'file:///testfile.csv' AS line
MERGE (x:Thing {
  CASE line.accountNumber WHEN NULL
    THEN name: line.accountName
    ELSE number: line.accountNumber
  END
})
ON CREATE SET
x.name = line.accountName,
x.number = line.accountNumber

但这当然行不通。有什么想法吗?

最佳答案

要在 LOAD CSV 中测试 .csv 文件中的“NULL”值,您必须测试空字符串。

测试文件.csv

acct_name,acct_num
John,1
Stacey,2
Alice,
Bob,4

这假设帐户名称是唯一的...

LOAD CSV WITH HEADERS FROM 'file:///testfile.csv' AS line

// If acct_num is not null, merge on account number and set name if node is created instead of found.
FOREACH(number IN (CASE WHEN line.acct_num <> "" THEN [TOINT(line.acct_num)] ELSE [] END) |
    MERGE (x:Thing {number:number})
    ON CREATE SET x.name = line.acct_name
)

// If acct_num is null, merge on account name. This node will not have an account number if it is created instead of matched.
FOREACH(name IN (CASE WHEN line.acct_num = "" THEN [line.acct_name] ELSE [] END) |
    MERGE (x:Thing {name:name})
)

关于csv - Neo4j 密码 : MERGE conditionally with values from LOAD CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003846/

相关文章:

python - 如何让 NumPy 创建带有字符串和 float 的矩阵

java - CREATE UNIQUE 导致与 Neo4j 和 JDBC 的重复关系

docker 部署版本中未加载 Neo4j bean 类

neo4j - Cypher:模式的哪些部分可以绑定(bind)到变量?

performance - 这个 Neo4j 查询可以优化吗?

jquery - 使用 ASP .NET MVC 和 jQuery AJAX 请求下载服务器生成的 CSV

python - 在 Python 中通过正则表达式分解 CSV

具有关系层次结构的 Neo4j Cypher 查询

node.js - neo4j响应中 "properties"对象的解释

php - 将mysql数据导出到本地主机中的csv下载文件,但不在服务器中