Neo4j从csv导入零记录

Neo4j从csv导入零记录,neo4j,cypher,Neo4j,Cypher,我对Neo4j和graph数据库不熟悉。在尝试从CSV文件导入一些关系时,我可以看到没有记录,即使文件中填充了足够的数据 LOAD CSV with headers FROM 'file:/graphdata.csv' as row WITH row WHERE row.pName is NOT NULL MERGE(transId:TransactionId) MERGE(refId:RefNo) MERGE(kewd:Keyword) MERGE(accNo:AccountNumber {b

我对Neo4j和graph数据库不熟悉。在尝试从CSV文件导入一些关系时,我可以看到没有记录,即使文件中填充了足够的数据

LOAD CSV with headers FROM 'file:/graphdata.csv' as row WITH row
WHERE row.pName is NOT NULL
MERGE(transId:TransactionId)
MERGE(refId:RefNo)
MERGE(kewd:Keyword)
MERGE(accNo:AccountNumber {bName:row.Bank_Name, pAmt:row.Amount, pName:row.Name})
其次是:

LOAD CSV with headers FROM 'file/graphdata.csv' as row WITH row
WHERE row.pName is NOT NULL
MATCH(transId:TransactionId)
MATCH(refId:RefNo)
MATCH(kewd:Keyword)
MATCH(accNo:AccountNumber {bName:row.Bank_Name, pAmt:row.Amount, pName:row.Name})
MERGE(transId)-[:REFERENCE]->(refId)-[:USED_FOR]->(kewd)-[:AGAINST]->(accNo)
RETURN *
编辑(表副本):

是否可能根本没有创建节点和关系?我如何获得所有这些想要的关系

  • file:/graphdata.csv
    file/graphdata.csv
    都不是合法的URL。您应该使用
    file:///graphdata.csv

  • 默认情况下,
    LOAD CSV
    要求一个“CSV”文件由以下内容组成。相反,您将使用可变数量的空格作为分隔符(有时也作为预告)。您需要:

    • 使用单个空格作为分隔符(并指定适当的选项)。但这对您的数据不是一个好主意,因为一些银行名称可能也包含空格
    • 使用逗号分隔符(或数据中不会出现的其他字符)
    例如,此文件格式将更好地工作:

    TransactionId,Bank_Name,RefNo,Keyword,Amount,AccountNumber,AccountName
    12345,ABC,78,X,1000,5421,WE
    23456,DEF,,X,2000,5471
    34567,ABC,32,Y,3000,4759,HE
    
  • 您的Cypher查询正在尝试使用不存在的
    属性(因为文件没有相应的列标题)。例如,您的文件没有
    pName
    Name
    标题

  • 通常情况下,您对该子句的使用可能不是您想要的。您应该仔细阅读文档,这可能会有所帮助


  • 1.您能否在问题中添加数据文件的外观(至少前几行)?2.为什么前3个
    MATCH
    子句没有指定任何属性——这是故意的吗?3.上次查询中的
    MERGE
    模式可能会创建重复的关系。@我已添加了一个示例表。
    TransactionId,Bank_Name,RefNo,Keyword,Amount,AccountNumber,AccountName
    12345,ABC,78,X,1000,5421,WE
    23456,DEF,,X,2000,5471
    34567,ABC,32,Y,3000,4759,HE