Neo4j 函数 "load csv with headers" 不加载属性
Neo4j function "load csv with headers" does not load properties
我尝试使用 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-Sheet 保存为:
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 行),但是其中 none 有任何 属性
我已经尝试过使用不同的分隔符或手动添加引号来保存文件。后者给出:
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:我在 Whosebug 上阅读了关于此主题的所有其他帖子,但 none 为我解决了它
编辑
1.
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';' return persons.label
给出:
persons.label
(empty)
(empty)
(empty)
(empty)
(empty)
(empty)
2.
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';' return persons
给出:
persons
{
"id": "0",
"label": "Person",
"name": "Dave"
}
{
"id": "1",
"label": "Person",
"name": "Boris"
}
an so on....
当您使用 ;
作为字段分隔符时,您应该指定 FIELDTERMINATOR 选项。这样:
使用此 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"} │
└───────────────────────────────────────────────┘
你可以试试反引号:
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';' return persons.`label`;
我尝试使用 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-Sheet 保存为:
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 行),但是其中 none 有任何 属性
我已经尝试过使用不同的分隔符或手动添加引号来保存文件。后者给出:
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:我在 Whosebug 上阅读了关于此主题的所有其他帖子,但 none 为我解决了它
编辑
1.
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';' return persons.label
给出:
persons.label
(empty)
(empty)
(empty)
(empty)
(empty)
(empty)
2.
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';' return persons
给出:
persons
{
"id": "0",
"label": "Person",
"name": "Dave"
}
{
"id": "1",
"label": "Person",
"name": "Boris"
}
an so on....
当您使用 ;
作为字段分隔符时,您应该指定 FIELDTERMINATOR 选项。这样:
使用此 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"} │
└───────────────────────────────────────────────┘
你可以试试反引号:
load csv with headers from "file:///nodes.csv" as persons FIELDTERMINATOR ';' return persons.`label`;