Я новичок в Cypher и пытаюсь создать узлы и связи из данных, взятых из базы данных SQL. Я уже экспортировал данные как CSV.
Вот фиктивное представление данных о том, как выглядят мои данные (у набора данных, над которым я работаю, ~ 84 тыс. Строк):
membership_id member_id hotel hotel_location visit_dt
1 A11 Hotel1 Texas 2019-01-01
1 A12 Hotel2 Texas 2019-02-04
1 A13 Hotel1 Texas 2019-01-01
2 B11 Hotel3 California 2019-01-25
2 B12 Hotel2 California 2019-02-04
2 B13 Hotel3 California 2019-01-25
2 B12 Hotel1 California 2019-01-01
Строка CSV для вышеупомянутых данных приведена ниже:
"membership_id,member_id,hotel,hotel_location,visit_dt\n1,A11,Hotel1,Texas,2019-01-01\n1,A12,Hotel2,NewYork,2019-02-04\n1,A13,Hotel1,Texas,2019-01-01\n2,B11,Hotel3,California,2019-01-25\n2,B12,Hotel2,NewYork,2019-02-04\n2,B13,Hotel3,California,2019-01-25\n2,B12,Hotel1,Texas,2019-01-01"
Предположим, что вышеупомянутые данные были загружены как dataset
.
Объекты, которые я хочу создать:
:Membership{membership_id:dataset.membership_id}
:Member{member_id:dataset.member_id}
:Hotel{hotel_name:dataset.hotel}
:State{state_name:dataset.hotel_location}
Отношения, которые я хочу создать между вышеупомянутыми объектами:
(:Membership)-[:ASSOCIATE]-(:Member)
(:Member)-[:VISIT{visit_date:dataset.visit_dt}]->(:Hotel)
(:Hotel)-[:LOCATED_AT{location:dataset.hotel_location}]->(:State)
Ниже приведено изображение того, как должен выглядеть мой график:
Чтобы добиться этого, я попробовал следующий запрос:
LOAD CSV WITH HEADERS FROM "file:///test.csv" AS dataset
MERGE (ms:Membership{family_id:dataset.patient_family_id})
WITH dataset, ms
MERGE (m::Member{member_id:dataset.member_id})
WITH dataset, ms, m
MERGE (h:Hotel{hotel_name:dataset.hotel})
WITH ms, m, h, dataset
MERGE (s:State{state_name:dataset.hotel_location})
WITH ms, m, h, s, dataset
MERGE (ms)-[:ASSOCIATE]-(m)
WITH ms, m, h, s, dataset
MERGE (m)-[:VISIT{visit_date:dataset.visit_dt}]->(h)
WITH ms, m, h, s, dataset
MERGE (h)-[:LOCATED_AT{location:dataset.hotel_location}]->(s)
RETURN ms, m, h, s
Но при выполнении вышеупомянутого запроса к набору данных (~ 84 тыс. Строк), он остается в работе в течение очень долгого времени, и мне никогда не удавалось достичь состояния, когда я могу увидеть некоторые результаты.
Так что я хотел бы узнать лучший способ (от начала до конца) достижения моего результата.
Заранее спасибо.