Neo4j 综合应用 & 来读个 CSV 吧

前情提要

还记得第 16 篇的时候提过下面这个

嗯... 看到标题就知道,没东西写了呢,反正剩三篇就让我能骗就骗吧x

LOAD CSV

竟然有玩 CSV 首先我们就需要一个 CSV 档案

就用我之前无聊去打 GTA 5 Online API 抓回来的载具种类资料吧

档案在此

先依照栏位,规划一下资料吧

Name Vehicle__Name Vehicle__Cost
Label & Property Property Property

再来直接来写入资料库吧

记得将档案丢到资料库的 import 资料夹中才读的到喔

LOAD CSV FROM "file:///GTA.csv" AS map
CALL apoc.create.node([map[0],"Vehicle"], {Name:map[0],VehicleName:map[1],VehicleCost:map[2]}) YIELD node 
RETURN count(*)

首先第一行 LOAD CSV FROM "file:///GTA.csv" AS map

为 Cypher 原始的 Load CSV 的指令

再来就是 CREATE Node 了

由於计画是直接将 CSV 的资料直接当 Label 用

所以直接将第 17 篇提过的 APOC Plugins 叫出来用会比较方便

至於那个 map[0] 我不知道为什麽写 map.Name 等会抓不到资料

反正这样写会过那就这样吧

到这边 Load CSV 的部分就完成了

再来来变个魔术吧

WITH ["Boats","Commercial","Compacts","Coupes","Cycles","Emergency","Helicopters","Industrial","Military","Motorcycles","Muscle","OffRoad","OpenWheel","Planes","Sedans","Service","Sports","SportsClassics","Super","Suvs","Utility","Vans"] AS CName
CREATE (gta:GTA{Name:"GTA"})
FOREACH ( n IN CName | CREATE (gta)-[:Type]->(:VehicleType{Name:n}))
MATCH (v:Vehicle),(vt:VehicleType)
WHERE v.Name = vt.Name
CREATE (vt)-[:Have]->(v)

执行上面两段语法,你就会获得这样的资料结构

GTA -> VehicleType -> Vehicle

全部抓出来看是不是看起来很酷呢


随便乱玩了一下资料

稍微模拟了一下大一点的资料库看起来的样子

随然复杂度没有很高就是了

29 篇的时候再来偷偷放复杂度更高的资料库吧

下篇 来讲讲 Cypher 的 Coding Style 吧

究竟铁人赛能不能完赛呢,让我们继续看下去


排版好看的版本同步更新在我的 HackMD


<<:  【Day26】Figma篇 : 从手机预览

>>:  利用 Grafana Operator 部署 Grafana 到 OpenShift,并建立客制化的 Dashboard。

Day3 差点难产的CSS

一直以来我都很有自知之明我不是一个很有艺术天份的人,所以一开始在设定目标时我就是以後端工程师为目标,...

Day3 NodeJS-Module、Exports与Require

今天要谈三个NodeJS的概念,进入新手村的第一个任务:Module、Exports与Require...

Day 9:AWS是什麽?30天从动漫/影视作品看AWS服务应用 -《PSYCHO-PASS心灵判官》part 3

《PSYCHO-PASS心灵判官》第四集出现的杀人事件,场景便始於监视官使用线上虚拟实境聊天室开始,...

D14 第七周 前端基础 JavaScript

这礼拜的课程进度是 FE102 DOM 事件处理 页面保存资料 介绍比较常使用到的 DOM 方法 d...

110/02 - 只有 StartActivityForResult 可以用吗?

前一天讲到合约(Contracts)和启动器(Launcher)取代StartActivityFor...