Du kan importera data från en CSV-fil (Comma Separated Values) till en Neo4j-databas. För att göra detta, använd LOAD CSV
klausul.
Att kunna ladda CSV-filer till Neo4j gör det enkelt att importera data från en annan databasmodell (till exempel en relationsdatabas).
Med Neo4j kan du ladda CSV-filer från en lokal eller fjärr-URL.
För att komma åt en fil lagrad lokalt (på databasservern), använd en file:///
URL. Annars kan du importera fjärrfiler med hjälp av något av HTTPS-, HTTP- och FTP-protokollen.
Ladda in en CSV-fil
Låt oss ladda en CSV-fil som heter genres.csv använder HTTP-protokollet. Det är inte en stor fil – den innehåller en lista med 115 musikgenrer, så den kommer att skapa 115 noder (och 230 egenskaper).
Den här filen lagras på Quackit.com, så du kan köra den här koden från din Neo4j-webbläsare och den bör importeras direkt till din databas (förutsatt att du är ansluten till Internet).
Du kan också ladda ner filen här:genres.csv
LOAD CSV FROM 'https://www.quackit.com/neo4j/tutorial/genres.csv' AS line CREATE (:Genre { GenreId: line[0], Name: line[1]})
Du kan utelämna vissa fält från CSV-filen om det behövs. Om du till exempel inte vill att det första fältet ska importeras till databasen kan du helt enkelt utelämna GenreId: line[0],
från ovanstående kod.
Att köra ovanstående uttalande bör ge följande framgångsmeddelande:
Du kan följa upp det med en fråga för att se de nyskapade noderna:
MATCH (n:Genre) RETURN n
Vilket bör resultera i att noderna är utspridda runt datavisualiseringsramen:
Importera en CSV-fil som innehåller rubriker
Den tidigare CSV-filen innehöll inga rubriker. Om CSV-filen innehåller rubriker kan du använda WITH HEADERS
.
Genom att använda den här metoden kan du också referera till varje fält med deras kolumn-/rubriknamn.
Vi har ytterligare en CSV-fil, den här gången med rubriker. Den här filen innehåller en lista med albumspår.
Återigen, den här är inte en stor fil – den innehåller en lista med 32 spår, så den kommer att skapa 32 noder (och 96 egenskaper).
Den här filen lagras också på Quackit.com, så du kan köra den här koden från din Neo4j-webbläsare och den bör importeras direkt till din databas (förutsatt att du är ansluten till Internet).
Du kan också ladda ner filen här:tracks.csv
LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})
Detta bör ge följande framgångsmeddelande:
Följs upp med en fråga för att se de nyskapade noderna:
MATCH (n:Track) RETURN n
Vilket bör resultera i de nya noderna utspridda runt datavisualiseringsramen.
Klicka på rader ikon för att se varje nod och dess tre egenskaper:
Anpassad fältavgränsare
Du kan ange en anpassad fältavgränsare om det behövs. Du kan till exempel ange ett semikolon istället för ett kommatecken om det är så CSV-filen är formaterad.
För att göra detta, lägg helt enkelt till FIELDTERMINATOR
klausul till uttalandet. Så här:
LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line FIELDTERMINATOR ';' CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})
Importera stora filer
Om du ska importera en fil med mycket data visas PERODIC COMMIT
klausul kan vara praktiskt.
Använder PERIODIC COMMIT
instruerar Neo4j att commitera data efter ett visst antal rader. Detta minskar minneskostnaderna för transaktionstillståndet.
Standardinställningen är 1 000 rader, så data kommer att överföras var tusende rad.
För att använda PERIODIC COMMIT
lägg bara in USING PERIODIC COMMIT
i början av satsen (före LOAD CSV
)
Här är ett exempel:
USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})
Ställa in frekvensen för periodiska åtaganden
Du kan också ändra kursen från 1000 rader standard till ett annat nummer. Lägg bara till numret efter USING PERIODIC COMMIT
:
Så här:
USING PERIODIC COMMIT 800 LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})
CSV-format/krav
Här är lite information om hur CSV-filen ska formateras när du använder LOAD CSV
:
- Teckenkodningen måste vara UTF-8.
- Slutlinjens avslutning är systemberoende, till exempel
\n
på Unix eller\r\n
på Windows. - Avslutaren måste vara ett kommatecken
,
om inte annat anges medFIELDTERMINATOR
alternativ. - Tecknet för strängcitattecken är dubbla citattecken
"
(dessa tas av när data läses in). - Alla tecken som behöver escapes kan escapes med omvänt snedstreck
\
karaktär. LOAD CSV
stöder resurser komprimerade med gzip, Deflate, samt ZIP-arkiv.