Formato de carga para los datos de openCypher - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Formato de carga para los datos de openCypher

Para cargar datos de openCypher con el formato CSV de OpenCypher, debe especificar los nodos y las relaciones en archivos independientes. El programa de carga puede cargar desde varios de estos archivos de nodos y archivos de relaciones en un solo trabajo de carga.

Para cada comando de carga, el conjunto de archivos que se va a cargar debe tener el mismo prefijo de ruta en un bucket de Amazon Simple Storage Service. Debe especificar ese prefijo en el parámetro de origen. Los nombres de archivo y sus extensiones no son importantes.

En Amazon Neptune, el formato CSV de openCypher cumple la especificación CSV de la RFC 4180. Para obtener más información, consulte la sección Common Format and MIME Type for CSV Files (https://tools.ietf.org/html/rfc4180) en el sitio web de Internet Engineering Task Force (IETF).

nota

Estos archivos deben estar codificados en formato UTF-8.

Cada archivo tiene una fila de encabezados separada por comas que contiene los encabezados de las columnas del sistema y los encabezados de las columnas de propiedades.

Encabezados de columnas del sistema en archivos de carga de datos de openCypher

Una columna del sistema determinada solo puede aparecer una vez en cada archivo. Todas las etiquetas de encabezado de columna del sistema distinguen entre mayúsculas y minúsculas.

Los encabezados de columna del sistema que son obligatorios y están permitidos son diferentes para los archivos de carga de nodos de openCypher y los archivos de carga de relaciones:

Encabezados de columnas del sistema en los archivos de nodos

  • :ID: (obligatorio) Un identificador para el nodo.

    Se puede añadir un espacio de identificación opcional al encabezado de la columna :ID del nodo de la siguiente manera: :ID(ID Space). Un ejemplo es :ID(movies).

    Al cargar las relaciones que conectan los nodos de este archivo, utilice los mismos espacios de identificador en las columnas de relaciones :START_ID y/o :END_ID de los archivos de relaciones.

    La columna :ID de los nodos se puede almacenar opcionalmente como una propiedad en el formato property name:ID. Un ejemplo es name:ID.

    Los identificadores de nodo deben ser únicos en todos los archivos de nodos de las cargas actuales y anteriores. Si se usa un espacio de identificador, los identificadores de nodo deben ser únicos en todos los archivos de nodo que usen el mismo espacio de identificador en las cargas actuales y anteriores.

  • :LABEL: etiqueta del nodo.

    Se permiten varios valores de etiqueta, separados por punto y coma (;).

Encabezados de columnas del sistema en archivos de relaciones

  • :ID: identificador de la relación. Es obligatorio cuando userProvidedEdgeIds es true (el valor predeterminado), pero no es válido cuando userProvidedEdgeIds esfalse.

    Los identificadores de relaciones deben ser únicos en todos los archivos de relaciones de las cargas actuales y anteriores.

  • :START_ID: (obligatorio) el identificador de nodo del nodo desde el que se inicia esta relación.

    Opcionalmente, se puede asociar un espacio de identificador a la columna del identificador inicial en el formato :START_ID(ID Space). El espacio de identificador asignado al identificador del nodo inicial debe coincidir con el espacio de identificador asignado al nodo en su archivo de nodos.

  • :END_ID: (obligatorio) el identificador de nodo del nodo en el que termina esta relación.

    Opcionalmente, se puede asociar un espacio de identificador a la columna del identificador final en el formato :END_ID(ID Space). El espacio de identificador asignado al identificador del nodo final debe coincidir con el espacio de identificador asignado al nodo en su archivo de nodos.

  • :TYPE: tipo de la relación. Las relaciones solo pueden tener un tipo.

nota

Consulte Carga de datos de openCypher para obtener información sobre cómo se gestionan los identificadores de nodos o relaciones duplicados en el proceso de carga masiva.

Encabezados de columnas de propiedades en archivos de carga de datos de openCypher

Puede especificar que una columna contenga los valores de una propiedad concreta mediante un encabezado de columna de propiedades con el siguiente formato:

propertyname:type

En los encabezados de las columnas no se admiten espacios, comas, vagones de ida y vuelta ni líneas nuevas, por lo que los nombres de las propiedades no pueden incluir estos caracteres. A continuación, se muestra un ejemplo de encabezado de columna para una propiedad denominada age del tipo Int:

age:Int

La columna con age:Int como encabezado de columna tendría entonces que contener un número entero o un valor vacío en cada fila.

Tipos de datos en archivos de carga de datos de openCypher de Neptune

  • Bool o Boolean: campo booleano. Los valores permitidos son true y false.

    Cualquier valor que no sea true se trata como false.

  • Byte: número entero comprendido en el rango de -128 a 127.

  • Short: número entero comprendido en el rango de -32,768 a 32,767.

  • Int: número entero comprendido en el rango de -2^31 a 2^31 - 1.

  • Long: número entero comprendido en el rango de -2^63 a 2^63 - 1.

  • Float: número de coma flotante IEEE 754 de 32 bits. Se admiten tanto la notación decimal como la notación científica. Infinity, -Infinity y NaN se reconocen, pero no INF.

    Los valores que tienen demasiados dígitos y no caben se redondean al valor más cercano (un valor intermedio se redondea a 0 para el último dígito restante en el nivel de bits).

  • Double: número de coma flotante IEEE 754 de 64 bits. Se admiten tanto la notación decimal como la notación científica. Infinity, -Infinity y NaN se reconocen, pero no INF.

    Los valores que tienen demasiados dígitos y no caben se redondean al valor más cercano (un valor intermedio se redondea a 0 para el último dígito restante en el nivel de bits).

  • String: el uso de las comillas es opcional. Los caracteres de coma, nueva línea y retorno de carro se escapan automáticamente si se incluyen en una cadena rodeada de comillas dobles (") como "Hello, World".

    Puede incluir comillas en una cadena entre comillas usando dos seguidas; por ejemplo "Hello ""World""".

  • DateTime: fecha Java en uno de los siguientes formatos ISO-8601:

    • yyyy-MM-dd

    • yyyy-MM-ddTHH:mm

    • yyyy-MM-ddTHH:mm:ss

    • yyyy-MM-ddTHH:mm:ssZ

Tipos de datos de conversión automática en archivos de carga de datos de openCypher de Neptune

Los tipos de datos de conversión automática sirven para cargar tipos de datos que Neptune no admite actualmente de forma nativa. Los datos de estas columnas se almacenan en forma de cadenas, textualmente, sin necesidad de compararlos con los formatos previstos. Se permiten los siguientes tipos de datos de conversión automática:

  • Char: campo Char. Almacenado como una cadena.

  • Date, LocalDate y LocalDateTime: consulte Neo4j Temporal Instants para ver una descripción de los tipos date, localdate y localdatetime. Los valores se cargan textualmente como cadenas, sin validación.

  • Duration: consulte Neo4j Duration format. Los valores se cargan textualmente como cadenas, sin validación.

  • Punto: campo de puntos para almacenar datos espaciales. Consulte Spatial instants. Los valores se cargan textualmente como cadenas, sin validación.

Ejemplo del formato de carga de openCypher

El siguiente diagrama, tomado del gráfico TinkerPop moderno, muestra un ejemplo de dos nodos y una relación:

Diagrama de dos nodos y una relación entre ellos.

A continuación, se muestra el gráfico en el formato de carga de openCypher normal de Neptune.

Archivo de nodos:

:ID,name:String,age:Int,lang:String,:LABEL v1,"marko",29,,person v2,"lop",,"java",software

Archivo de relaciones:

:ID,:START_ID,:END_ID,:TYPE,weight:Double e1,v1,v2,created,0.4

Como alternativa, puede utilizar los espacios de identificador y el identificador como una propiedad, de la siguiente manera:

Primer archivo de nodo:

name:ID(person),age:Int,lang:String,:LABEL "marko",29,,person

Segundo archivo de nodo:

name:ID(software),age:Int,lang:String,:LABEL "lop",,"java",software

Archivo de relaciones:

:ID,:START_ID,:END_ID,:TYPE,weight:Double e1,"marko","lop",created,0.4