還記得第 16 篇的時候提過下面這個
嗯... 看到標題就知道,沒東西寫了呢,反正剩三篇就讓我能騙就騙吧x
竟然有玩 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