关于导入CSV到Neo4j的
问题描述:
问题我有一个关于导入CSV三个问题:关于导入CSV到Neo4j的
- 是否有可能使命令忽略的CSV文件的第一行? (因为有很多文件需要导入,所以更改不方便)
- 如果csv文件中的相应属性为空,是否可以使关系或节点的属性为空?
- 是否有可能具有不同(数量)属性的相同类型的节点?
答
1)是的,你可以在LOAD CSV使用SKIP还有:
LOAD CSV WITH HEADERS FROM "file:///dummyfile.csv" AS row
WITH row
SKIP 1
MERGE (n:Node {id: row[0]})
2)如果CSV列值为NULL,则相应的属性值将是空为好。如果为空,则该属性将不会创建
假设以下CSV:
id,title,desc
1,title 1,desc1
2,,desc 2
而下面的LOAD CSV:
LOAD CSV WITH HEADERS FROM "https://gist.githubusercontent.com/ikwattro/ed85bfc98c9298924c154ecf3e0ab2aa/raw/54a9303c365a7698c87728d458f8de703a9c22e1/load.csv" AS row
CREATE (n:Post {id: row['id'], title: row['title'], description: row['desc']})
这将创建以下文件:
╒══════════════════════════════════════════════════╕
│"n" │
╞══════════════════════════════════════════════════╡
│{"description":"desc1","id":"1","title":"title 1"}│
├──────────────────────────────────────────────────┤
│{"description":"desc 2","id":"2"} │
└──────────────────────────────────────────────────┘
3)是的,Neo4j是无模式的,你不需要有相同数量的属性在具有相同标签的节点上的节点
谢谢。关于2),列值不是NULL,列只是空的。相应的属性值是否也为空? – Aqqqq
所以如果列是空的,那么属性值将不会被设置。编辑我的答案 –
对于1):我的意思是“WITH row”是必需的,而“Merge ...”不是? – Aqqqq