sql >> Databasteknik >  >> RDS >> Mysql

Neo4j - Importera data från en CSV-fil med hjälp av Cypher

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 med FIELDTERMINATOR 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.

  1. Vad kan få en Oracle ROWID att ändras?

  2. Hur du kontrollerar din SQL Server-version

  3. SUM() Funktion i SQL Server

  4. PostgreSQL - Byt namn på databas