【问题标题】:Graph database creation using Neo4j - Airline example使用 Neo4j 创建图形数据库 - 航空公司示例
【发布时间】:2021-11-15 14:39:34
【问题描述】:

我正在尝试从下面的 csv 创建一个 neo4j 图形数据库:

我发现很难弄清楚不同的节点和关系。

我尝试了下面的代码,但数据库没有像它需要的那样连接。

LOAD CSV WITH HEADERS FROM 'file:///dummy.csv' AS row
MERGE (a: Airport {depatureId: row.Origin, arrivalId: row.Dest})
MERGE (f: Flight {flightId: row.Flight_num, distance: row.Distance, Flightdate: row.Date, Flightdelay: row.Total_delay, Airline: row.Carrier_code})
MERGE (a)-[r1:HAS_FLIGHT]->(f)
MERGE (f)-[r2:FLYING_TO]->(a)

又一次尝试

LOAD CSV WITH HEADERS FROM 'file:///dummy.csv' AS row
MERGE (o: Origin {origin_airportId: row.Origin})
MERGE (d: Destination {destination_airportId: row.Dest})
MERGE (f: Flight {flightId: row.Flight_num, distance: row.Distance, Flightdate: row.Date, Flightdelay: row.Total_delay, Airline: row.Carrier_code})
MERGE (o)-[r1:FLYING_FROM]->(f)
MERGE (f)-[r2:FLYING_TO]->(d)

任何想法或建议将不胜感激,谢谢。

【问题讨论】:

  • 请更具体地编辑您的问题:运行您提到的负载时出了什么问题?另外,请将您的示例 csv 编辑为格式化文本,而不是文本图像。这个meta post 列出了这很重要的许多原因。最后,这与 olap 或立方体(由您的标签引用)无关。我相应地删除了这些标签。
  • 可能,你应该MERGE Flight节点只有一个模式的flightId,其他属性应该通过SET子句设置?

标签: csv neo4j cypher


【解决方案1】:

我在加载 csv 时使用数据类型:toInteger(row.nbr)、toFloat()、toString()、toBoolean 等。要调试加载,您可以尝试加载特定项目以查看特定合并是否混乱。

您是否设置了索引以加快加载速度?您的文件在 Neo4j 导入目录中吗?

您要合并的关系设置不正确。它们应该在一个单独的负载中完成,看起来像这样:

    LOAD CSV WITH HEADERS FROM 'file:///dummy.csv' AS row
    MATCH (o: Origin {origin_airportId: toString(row.Origin)})
    MATCH (f: Flight {flightId: toInteger(row.Flight_num)})
    MERGE (o)-[r1:FLYING_FROM]->(f)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多