sql >> Base de Datos >  >> RDS >> Mysql

Neo4j - Importar datos desde un archivo CSV usando Cypher

Puede importar datos de un archivo CSV (valores separados por comas) a una base de datos Neo4j. Para hacer esto, use el LOAD CSV cláusula.

Poder cargar archivos CSV en Neo4j facilita la importación de datos desde otro modelo de base de datos (por ejemplo, una base de datos relacional).

Con Neo4j, puede cargar archivos CSV desde una URL local o remota.

Para acceder a un archivo almacenado localmente (en el servidor de la base de datos), use un file:/// URL De lo contrario, puede importar archivos remotos utilizando cualquiera de los protocolos HTTPS, HTTP y FTP.

Cargar un archivo CSV

Carguemos un archivo CSV llamado genres.csv utilizando el protocolo HTTP. No es un archivo grande:contiene una lista de 115 géneros musicales, por lo que creará 115 nodos (y 230 propiedades).

Este archivo se almacena en Quackit.com, por lo que puede ejecutar este código desde su navegador Neo4j y debería importarse directamente a su base de datos (suponiendo que esté conectado a Internet).

También puede descargar el archivo aquí:genders.csv

LOAD CSV FROM 'https://www.quackit.com/neo4j/tutorial/genres.csv' AS line
CREATE (:Genre { GenreId: line[0], Name: line[1]})

Puede omitir ciertos campos del archivo CSV si es necesario. Por ejemplo, si no desea que el primer campo se importe a la base de datos, simplemente puede omitir GenreId: line[0], del código anterior.

Ejecutar la declaración anterior debería producir el siguiente mensaje de éxito:

Puede continuar con una consulta para ver los nodos recién creados:

MATCH (n:Genre) RETURN n

Lo que debería dar como resultado los nodos dispersos alrededor del marco de visualización de datos:

Importar un archivo CSV que contenga encabezados

El archivo CSV anterior no contenía encabezados. Si el archivo CSV contiene encabezados, puede usar WITH HEADERS .

El uso de este método también le permite hacer referencia a cada campo por su nombre de columna/encabezado.

Tenemos otro archivo CSV, esta vez con encabezados. Este archivo contiene una lista de pistas de álbumes.

Nuevamente, este no es un archivo grande:contiene una lista de 32 pistas, por lo que creará 32 nodos (y 96 propiedades).

Este archivo también se almacena en Quackit.com, por lo que puede ejecutar este código desde su navegador Neo4j y debería importarse directamente a su base de datos (suponiendo que esté conectado a Internet).

También puede descargar el archivo aquí: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})

Esto debería producir el siguiente mensaje de éxito:

Seguido con una consulta para ver los nodos recién creados:

MATCH (n:Track) RETURN n

Lo que debería dar lugar a nuevos nodos dispersos por el marco de visualización de datos.

Haga clic en las Filas icono para ver cada nodo y sus tres propiedades:

Delimitador de campo personalizado

Puede especificar un delimitador de campo personalizado si es necesario. Por ejemplo, podría especificar un punto y coma en lugar de una coma si ese es el formato del archivo CSV.

Para hacer esto, simplemente agregue el FIELDTERMINATOR cláusula de la declaración. Así:

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})

Importación de archivos grandes

Si va a importar un archivo con una gran cantidad de datos, el PERODIC COMMIT cláusula puede ser útil.

Usando PERIODIC COMMIT indica a Neo4j que confirme los datos después de un cierto número de filas. Esto reduce la sobrecarga de memoria del estado de transacción.

El valor predeterminado es 1000 filas, por lo que los datos se confirmarán cada mil filas.

Para usar PERIODIC COMMIT simplemente inserte USING PERIODIC COMMIT al comienzo de la declaración (antes de LOAD CSV )

He aquí un ejemplo:

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})

Establecer la tasa de confirmaciones periódicas

También puede cambiar la tasa predeterminada de 1000 filas a otro número. Simplemente agregue el número después de USING PERIODIC COMMIT :

Así:

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/Requisitos

Aquí hay información sobre cómo se debe formatear el archivo CSV cuando se usa LOAD CSV :

  • La codificación de caracteres debe ser UTF-8.
  • La terminación de la línea final depende del sistema, por ejemplo, \n en Unix o \r\n en Windows.
  • El terminador debe ser una coma , a menos que se especifique lo contrario usando el FIELDTERMINATOR opción.
  • El carácter de la comilla de cadena es la comilla doble " (estos se eliminan cuando se leen los datos).
  • Cualquier carácter que deba escaparse puede escaparse con la barra invertida \ personaje.
  • LOAD CSV admite recursos comprimidos con gzip, Deflate y archivos ZIP.