Mysql
 sql >> Database >  >> RDS >> Mysql

Neo4j - Importa dati da un file CSV utilizzando Cypher

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