Neo4j 合并和匹配之间需要使用
我正在尝试设置一个图形数据库,我有两个csv文件。我已经成功地安装了一个csv,第一个运行良好 第一个CSV:Neo4j 合并和匹配之间需要使用,neo4j,Neo4j,我正在尝试设置一个图形数据库,我有两个csv文件。我已经成功地安装了一个csv,第一个运行良好 第一个CSV: LOAD CSV WITH HEADERS FROM "file:///C:/Users/rraina/Desktop/acc.csv" AS csvLine MERGE (providerName:ProviderName { name: csvLine.providerName }) MERGE (container:Container { name: csvLine.CONTAI
LOAD CSV WITH HEADERS FROM "file:///C:/Users/rraina/Desktop/acc.csv" AS csvLine
MERGE (providerName:ProviderName { name: csvLine.providerName })
MERGE (container:Container { name: csvLine.CONTAINER })
MERGE (asset:Asset { name: csvLine.isAsset })
CREATE (account:Account { accountName: csvLine.accountName, id: csvLine.id})
CREATE (account)-[:ACCOUNTS_IN]->(providerName)
CREATE (account)-[:ACCOUNT_TYPE]->(container)
CREATE (account)-[:IS_ASSET]->(asset)
CSV如下所示:
CONTAINER,accountName,accountStatus,accountNumber,isAsset,balance,id,lastUpdated,providerId,providerName,refreshinfo,isManual
reward,RAHUL RAINA,ACTIVE,xxxx0363,TRUE,3334,16294736,1433967380,9863,HSBC Bank Personal Banking,0|OK|1433967380|1433967380,FALSE
bank,SAVINGS ACCOUNT - RES,ACTIVE,xxxx5006,TRUE,6048.07,16294732,1433967401,9863,HSBC Bank Personal Banking,0|OK|1433967401|1433967401,FALSE
creditCard,VISA GOLD,ACTIVE,xxxx0363,FALSE,4885.56,16294492,1433967428,9863,HSBC Bank Personal Banking,0|OK|1433967428|1433967428,FALSE
bank,SBCHQ-GEN-PUB-IND-NONRURAL-INR,ACTIVE,xxxx6404,TRUE,24572.98,16294488,1433966054,9421,State Bank of India,0|OK|1433966054|1433966054,FALSE
CONTAINER,id,amount,baseType,category,description,originalDescription,isManual,date,transactionDate,merchantName,status,accountId
bank,133817384,1400,DEBIT,ATM/Cash Withdrawals,ATM07JUN15 NFS 11:38:44A96103218ATM,ATM07JUN15 NFS 11:38:44A96103218ATM,FALSE,6/8/2015,6/8/2015,Cash Withdrawal,POSTED,16294732
bank,133815940,224,DEBIT,Transfers,TO TRANSFER INB Tinyowl Technology Privat,TO TRANSFER INB Tinyowl Technology Privat,FALSE,6/8/2015,6/8/2015,Transfer,POSTED,16294488
通过上面的查询,我已经能够绘制出我需要的图表
但是,当我导入第二个csv并尝试添加从trans.csv到acc.csv的关系时
trans.csv如下所示:
CONTAINER,accountName,accountStatus,accountNumber,isAsset,balance,id,lastUpdated,providerId,providerName,refreshinfo,isManual
reward,RAHUL RAINA,ACTIVE,xxxx0363,TRUE,3334,16294736,1433967380,9863,HSBC Bank Personal Banking,0|OK|1433967380|1433967380,FALSE
bank,SAVINGS ACCOUNT - RES,ACTIVE,xxxx5006,TRUE,6048.07,16294732,1433967401,9863,HSBC Bank Personal Banking,0|OK|1433967401|1433967401,FALSE
creditCard,VISA GOLD,ACTIVE,xxxx0363,FALSE,4885.56,16294492,1433967428,9863,HSBC Bank Personal Banking,0|OK|1433967428|1433967428,FALSE
bank,SBCHQ-GEN-PUB-IND-NONRURAL-INR,ACTIVE,xxxx6404,TRUE,24572.98,16294488,1433966054,9421,State Bank of India,0|OK|1433966054|1433966054,FALSE
CONTAINER,id,amount,baseType,category,description,originalDescription,isManual,date,transactionDate,merchantName,status,accountId
bank,133817384,1400,DEBIT,ATM/Cash Withdrawals,ATM07JUN15 NFS 11:38:44A96103218ATM,ATM07JUN15 NFS 11:38:44A96103218ATM,FALSE,6/8/2015,6/8/2015,Cash Withdrawal,POSTED,16294732
bank,133815940,224,DEBIT,Transfers,TO TRANSFER INB Tinyowl Technology Privat,TO TRANSFER INB Tinyowl Technology Privat,FALSE,6/8/2015,6/8/2015,Transfer,POSTED,16294488
用于导入第二个csv并建立关系的查询:
LOAD CSV WITH HEADERS FROM "file:///C:/Users/rraina/Desktop/trans.csv" AS csvLine
MERGE (baseType:BaseType { name: csvLine.baseType })
MERGE (category:Category { name: csvLine.category })
MERGE (merchantName:MerchantName { name: csvLine.merchantName })
MATCH (account:Account { id: csvLine.accountId }),(transaction:Transaction { id: csvLine.accountId })
CREATE (transaction:Transaction { description: csvLine.description, postedDate: csvLine.date,transactionDate: csvLine.transactionDate ,id: csvLine.id })
CREATE (transaction)-[:CATEGORY_IN]->(category)
CREATE (transaction)-[:TRANSACTED_AT]->(merchantName)
CREATE (transaction)-[:BASETYPE_OF]->(baseType)
我得到这个错误:
WITH is required between MERGE and MATCH (line 5, column 1 (offset: 253))
"MATCH (account:Account { id: csvLine.accountId }),(transaction:Transaction { id: csvLine.accountId })"
如果acc.csv的:account.id
等于
trans.csv的:transaction.id为什么不给它所要求的带有语句的
请注意:
WITH baseType, category, merchantName, csvLine
在您上次的合并
和您的匹配
之间,这解决了这个错误,但奇怪的是现在它说:csvLine未定义(第7行第30列(偏移量:346))“匹配(帐户:account{id:csvLine.accountId}),(事务:事务{id:csvLine.accountId}”
我能够从第一个文件导入csv,但我错过了csvLine
变量。我更新了我的答案,用
语句将其添加到。使用新的with
语句重试一次。是的,这完成了任务,但是为什么它会说transaction已经声明(第8行第9列(偏移量:407))“创建(transaction:transaction{description:row.description,postedate:row.date,transactionDate:row.transactionDate,id:row.id}”
我很抱歉打扰您,因为您使用的名称是交易
两次。在MATCH
语句的后半部分绑定一次,然后在第一个CREATE
语句中再次绑定。不能有两个名为transaction
的节点。您需要为其中一个选择不同的名称。