如何定义节点的大型属性集而不必全部键入它们?

时间:2017-01-25 10:31:35

标签: neo4j cypher graph-databases

我已将csv文件导入neo4j。我一直在尝试为每个节点定义大量属性(所有列)。如何在不输入每个名字的情况下做到这一点?

我一直在尝试这个:

USING PERIODIC COMMIT
load csv WITH headers from "file:///frozen_catalog.csv" AS line

//Creating nodes for each product id with its properties
CREATE (product:product{id : line.`o_prd`,
Gross_Price_Average: TOINT(line.`Gross_Price_Average`),
O_PRD_SPG: TOINT(line.`O_PRD_SPG`)});

2 个答案:

答案 0 :(得分:1)

您可以从地图添加属性。例如:

LOAD CSV WITH HEADERS FROM "http://data.neo4j.com/northwind/products.csv" AS row
MERGE (P:Product {productID: row.productID})
SET P += row

http://neo4j.com/docs/developer-manual/current/cypher/clauses/set/#set-adding-properties-from-maps

答案 1 :(得分:0)

LOAD CSV命令无法在某些字段上执行自动类型转换,这必须明确完成(尽管您可以避免使用map projection功能明确提及所有其他字段以转换您的行数据之前通过stdob设置它 - 的建议。

您可能需要查看Neo4j的import tool,因为这样您就可以在标题中指定字段类型,这应该为您执行类型转换。

也就是说,77列是在各个节点上存储的大量数据。您可能希望再次查看数据并确定其中某些属性是否会更好地建模为具有与产品节点关系的自己标签的节点。你提到其中一些属于绝对属性。类别非常适合作为节点而不是作为属性单独建模,也许您的其他一些属性也可以更好地用作节点。