我是图数据库的新手。我的项目是通过Rstudio访问neo4j 3.2.0。
我的数据输入快照:
头(cleandata)
TimeSeconds ipLayerProtocol firstSeenSrcIp firstSeenSrcPort firstSeenDestIp firstSeenDestPort
1 1365582756 17 172.20.2.3 29961 239.255.255.250 1900
2 1365582756 17 172.20.2.18 29986 239.255.255.250 1900
3 1365582756 17 172.20.2.17 29985 239.255.255.250 1900
我想要的输出:
我想做什么: 喜欢一次性提交包含多个cypher语句的查询,批量为5000。
以下是代码:
query = "
CREATE CONSTRAINT ON (ipcluster:IPCluster) ASSERT ipcluster.ip IS UNIQUE
CREATE CONSTRAINT ON (origin:IPNode) ASSERT origin.ipport IS UNIQUE
CREATE CONSTRAINT ON (dest:IPNode) ASSERT dest.ipport IS UNIQUE
MERGE (ipcluster:IPCluster {ip: {SrcIP} })
CREATE (flow:Flow {timestamp: {TimeSeconds},protocol:{TransportProto} })
SET flow.timestamp = TOINT({TimeSeconds})
MERGE (origin:IPNode {ip: {SrcIP}, port: {SrcPort}, ipport:{SrcIP+':'+SrcPort} })
MERGE (dest:IPNode {ip: {DstIP}, port: {DstPort},ipport:{DstIP+':'+DstPort} })
MERGE (ipcluster)-[has:HAS]->(origin)
CREATE (flow)-[o:ORIGIN]->(origin)
CREATE (flow)-[d:DESTINATION]->(dest)
"
t1 <- Sys.time()
tx = newTransaction(graph)
for(i in 1:nrow(cleandata)) {
row = cleandata[i, ]
appendCypher(tx, query,
SrcIP=row$firstSeenSrcIp,
SrcPort=row$firstSeenSrcPort,
TimeSeconds=row$TimeSeconds,
TransportProto=row$ipLayerProtocol,
DstIP=row$firstSeenDestIp,
DstPort=row$firstSeenDestPort)
}
commit(tx)
t2 <- Sys.time()
t2 - t1
summary(graph)
遇到错误:
Error in appendCypher.transaction(tx, query, SrcIP = row$firstSeenSrcIp, :
Neo.ClientError.Statement.SyntaxError
Invalid input 'C': expected whitespace, comment, ';' or end of input (line 2, column 74 (offset: 76))
答案 0 :(得分:0)
我轻松的赌注是意外的C来自第二次创造,因为没有;在第一个创建约束的末尾。