Puoi importare dati da un file CSV (Comma Separated Values) in un database Neo4j. Per fare ciò, usa il LOAD CSV
clausola.
Essere in grado di caricare file CSV in Neo4j semplifica l'importazione di dati da un altro modello di database (ad esempio, un database relazionale).
Con Neo4j, puoi caricare file CSV da un URL locale o remoto.
Per accedere a un file archiviato localmente (sul server del database), utilizzare un file:///
URL. In caso contrario, puoi importare file remoti utilizzando uno qualsiasi dei protocolli HTTPS, HTTP e FTP.
Carica un file CSV
Carichiamo un file CSV chiamato genres.csv utilizzando il protocollo HTTP. Non è un file di grandi dimensioni:contiene un elenco di 115 generi musicali, quindi creerà 115 nodi (e 230 proprietà).
Questo file è archiviato su Quackit.com, quindi puoi eseguire questo codice dal tuo browser Neo4j e dovrebbe importarlo direttamente nel tuo database (supponendo che tu sia connesso a Internet).
Puoi anche scaricare il file qui:generi.csv
LOAD CSV FROM 'https://www.quackit.com/neo4j/tutorial/genres.csv' AS line CREATE (:Genre { GenreId: line[0], Name: line[1]})
Se necessario, puoi omettere alcuni campi dal file CSV. Ad esempio, se non vuoi che il primo campo venga importato nel database, puoi semplicemente omettere GenreId: line[0],
dal codice sopra.
L'esecuzione dell'istruzione precedente dovrebbe produrre il seguente messaggio di successo:
Puoi continuare con una query per vedere i nodi appena creati:
MATCH (n:Genre) RETURN n
Il che dovrebbe comportare i nodi sparsi nel frame di visualizzazione dei dati:
Importa un file CSV contenente intestazioni
Il file CSV precedente non conteneva intestazioni. Se il file CSV contiene intestazioni, puoi utilizzare WITH HEADERS
.
L'utilizzo di questo metodo consente inoltre di fare riferimento a ciascun campo tramite il nome della colonna/intestazione.
Abbiamo un altro file CSV, questa volta con le intestazioni. Questo file contiene un elenco di brani dell'album.
Ancora una volta, questo non è un file di grandi dimensioni:contiene un elenco di 32 tracce, quindi creerà 32 nodi (e 96 proprietà).
Questo file è anche archiviato su Quackit.com, quindi puoi eseguire questo codice dal tuo browser Neo4j e dovrebbe importarlo direttamente nel tuo database (supponendo che tu sia connesso a Internet).
Puoi anche scaricare il file qui: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})
Questo dovrebbe produrre il seguente messaggio di successo:
Continua con una query per visualizzare i nodi appena creati:
MATCH (n:Track) RETURN n
Il che dovrebbe comportare i nuovi nodi sparsi nel frame di visualizzazione dei dati.
Fare clic su Righe icona per vedere ogni nodo e le sue tre proprietà:
Delimitatore di campo personalizzato
È possibile specificare un delimitatore di campo personalizzato, se necessario. Ad esempio, puoi specificare un punto e virgola invece di una virgola se è così che è formattato il file CSV.
Per fare ciò, aggiungi semplicemente il FIELDTERMINATOR
clausola alla dichiarazione. In questo modo:
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})
Importazione di file di grandi dimensioni
Se intendi importare un file con molti dati, PERODIC COMMIT
la clausola può essere utile.
Usando PERIODIC COMMIT
indica a Neo4j di eseguire il commit dei dati dopo un certo numero di righe. Ciò riduce il sovraccarico di memoria dello stato della transazione.
Il valore predefinito è 1000 righe, quindi i dati verranno salvati ogni mille righe.
Per utilizzare PERIODIC COMMIT
basta inserire USING PERIODIC COMMIT
all'inizio dell'istruzione (prima di LOAD CSV
)
Ecco un esempio:
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})
Impostazione del tasso di impegni periodici
Puoi anche modificare la velocità da 1000 righe predefinite a un altro numero. Basta aggiungere il numero dopo USING PERIODIC COMMIT
:
In questo modo:
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})
Formato CSV/requisiti
Ecco alcune informazioni su come formattare il file CSV quando si utilizza LOAD CSV
:
- La codifica dei caratteri deve essere UTF-8.
- La terminazione della riga finale dipende dal sistema, ad esempio
\n
su Unix o\r\n
su Windows. - Il terminatore deve essere una virgola
,
se non diversamente specificato utilizzando ilFIELDTERMINATOR
opzione. - Il carattere per la virgoletta della stringa è la virgoletta doppia
"
(questi vengono rimossi quando i dati vengono letti). - È possibile eseguire l'escape di tutti i caratteri di cui è necessario eseguire l'escape con la barra rovesciata
\
carattere. LOAD CSV
supporta risorse compresse con gzip, Deflate e archivi ZIP.