“Neo4j函数”;加载带有标题的csv";不加载属性
我尝试使用load CSV with headers命令将以下节点加载到Neo4j中:“Neo4j函数”;加载带有标题的csv";不加载属性,neo4j,cypher,load-csv,Neo4j,Cypher,Load Csv,我尝试使用load CSV with headers命令将以下节点加载到Neo4j中: id label name 0 Person Dave 1 Person Boris 2 Person Rita 3 Person Daniel 4 Person Papa 5 Person Mama 我将Excel工作表另存为: CSV UTF-8 (Comma delimited) (*.csv) 文件位置为: C:\Users\FY197T (207690
id label name
0 Person Dave
1 Person Boris
2 Person Rita
3 Person Daniel
4 Person Papa
5 Person Mama
我将Excel工作表另存为:
CSV UTF-8 (Comma delimited) (*.csv)
文件位置为:
C:\Users\FY197T (2076902)\Documents\Neo4j\default.graphdb\import\nodes.csv
在编辑器中打开时如下所示:
id;label;name
0;Person;Dave
1;Person;Boris
2;Person;Rita
3;Person;Daniel
4;Person;Papa
5;Person;Mama
要将节点加载到Neo4j中,我使用:
load csv with headers from "file:///nodes.csv" as persons create (p1:Person {nodeID:persons.id, label: persons.label, name: persons.name})
但我得到的是:
Added 6 labels, created 6 nodes, completed after 105 ms.
所以有6个节点(我有6行),但它们都没有任何属性
我已经尝试使用不同的分隔符保存文件,或者手动添加引号。后者给出:
there's a field starting with a quote and whereas it ends that quote
there seems to be characters in that field after that ending quote. That
isn't supported. This is what I read: '"id"";"'
PS:我读了关于stackoverflow的所有其他帖子,但没有一篇能帮我解决这个问题
编辑
一,
给出:
persons.label
(empty)
(empty)
(empty)
(empty)
(empty)
(empty)
二,
给出:
persons
{
"id": "0",
"label": "Person",
"name": "Dave"
}
{
"id": "1",
"label": "Person",
"name": "Boris"
}
an so on....
当您使用
时
作为字段分隔符,应指定选项。这样:
使用此CSV文件:
id;label;name
0;Person;Dave
1;Person;Boris
2;Person;Rita
3;Person;Daniel
4;Person;Papa
5;Person;Mama
以及此导入脚本:
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';'
create (p1:Person {nodeID:persons.id, label: persons.label, name: persons.name})
导入后,我在图形上运行了以下简单查询:
MATCH (n) RETURN n
结果如下:
╒═══════════════════════════════════════════════╕
│"n" │
╞═══════════════════════════════════════════════╡
│{"name":"Dave","label":"Person","nodeID":"0"} │
├───────────────────────────────────────────────┤
│{"name":"Boris","label":"Person","nodeID":"1"} │
├───────────────────────────────────────────────┤
│{"name":"Rita","label":"Person","nodeID":"2"} │
├───────────────────────────────────────────────┤
│{"name":"Daniel","label":"Person","nodeID":"3"}│
├───────────────────────────────────────────────┤
│{"name":"Papa","label":"Person","nodeID":"4"} │
├───────────────────────────────────────────────┤
│{"name":"Mama","label":"Person","nodeID":"5"} │
└───────────────────────────────────────────────┘
您可以尝试使用backticks:
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';' return persons.`label`;
不幸的是,我得到了相同的结果:添加了6个标签,创建了6个标签nodes@Boris很奇怪。。。我将您的CSV数据复制并粘贴到导入目录中名为
nodes.CSV
的文件中。添加字段终止符后
选项所有工作。。。您能否共享存储在导入目录中的原始CSV文件?是的,非常奇怪,可能是.conf文件中的某些内容?@Boris,与您的CSV结果相同。一切正常。我在一台Linux机器上工作。@Boris“加载csv并从中获取标题”的输出是什么file:///nodes.csv“作为终结者”;“返回人员?
╒═══════════════════════════════════════════════╕
│"n" │
╞═══════════════════════════════════════════════╡
│{"name":"Dave","label":"Person","nodeID":"0"} │
├───────────────────────────────────────────────┤
│{"name":"Boris","label":"Person","nodeID":"1"} │
├───────────────────────────────────────────────┤
│{"name":"Rita","label":"Person","nodeID":"2"} │
├───────────────────────────────────────────────┤
│{"name":"Daniel","label":"Person","nodeID":"3"}│
├───────────────────────────────────────────────┤
│{"name":"Papa","label":"Person","nodeID":"4"} │
├───────────────────────────────────────────────┤
│{"name":"Mama","label":"Person","nodeID":"5"} │
└───────────────────────────────────────────────┘
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';' return persons.`label`;