Import danych z bazy relacyjnej do Neo4j

Jednym z najprostszych sposobów jest import danych z wykorzystaniem plików csv.

Załóżmy, że mamy bazę relacyjną składającą się z dwóch tabel powiązanych relacją:

Baza relacyjna

1. Eksportujemy dane z bazy relacyjnej do pliku. W MS SQL Server można skorzystać z Wizarda (database -> Tasks -> Export data)

2. W pierwszej kolejności należy załadować dane z tabel będących wierzchołkami grafu – a więc dane z tabeli Pojazd oraz Osoba. Opłaca się także założyć indeksy, gdyż znacznie przyspiesza to pracę:

USING PERIODIC COMMIT  10000
LOAD CSV WITH HEADERS FROM 'file:/d:/temp/Osoba.csv' AS osoba
CREATE (:Osoba{Pesel: osoba.Pesel, Imie: osoba.Imie, Nazwisko: osoba.Nazwisko})

CREATE INDEX ON :Osoba(Pesel)

USING PERIODIC COMMIT  10000
LOAD CSV WITH HEADERS FROM 'file:/d:/temp/Pojazd.csv' AS pojazd
CREATE (:Pojazd{Id: toInt(pojazd.Id), Nazwa: pojazd.Nazwa, Typ: pojazd.Typ})

CREATE INDEX ON :Pojazd(Id)

 

3. Powiązanie – krawędź – ładujemy wykorzystując zapytanie:

USING PERIODIC COMMIT 10000
LOAD CSV WITH HEADERS FROM "file:/d:/temp/Pojazd.csv" AS Pojazd
MATCH (osoba:Osoba { Pesel: Pojazd.Pesel}),(pojazd:Pojazd {Id: toInt(Pojazd.Id)})
CREATE (osoba)-[:OSOBA_POJAZD]->(pojazd)

 

 

21 września 2015 Aneta Kielan IT No Comments