

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.

# Ejemplo: carga de datos en una instancia de base de datos de Neptune
<a name="bulk-load-data"></a>

Este ejemplo muestra cómo cargar datos en Amazon Neptune. A menos que se indique lo contrario, debe seguir estos pasos desde una instancia de Amazon Elastic Compute Cloud (Amazon EC2) en la misma instancia de la nube privada virtual (VPC) de Amazon que su instancia de base de datos de Neptune.

## Ejemplo de requisitos previos de carga de datos
<a name="bulk-load-tutorial-prereqs"></a>

Antes de comenzar, debe disponer de lo siguiente:
+ Una instancia de base de datos de Neptune.

  Para obtener información acerca del inicio de una instancia de base de datos de Neptune, consulte [Creación de un clúster de Amazon Neptune](get-started-create-cluster.md).
+ Un bucket de Amazon Simple Storage Service (Amazon S3) en el que colocar los datos.

  Es posible utilizar un bucket existente. Si no tiene un bucket de S3, consulte [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) en la *[Guía de introducción de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)*.
+ Datos del gráfico que se van a cargar, en uno de los formatos admitidos por el programa de carga de Neptune:

  Si utiliza Gremlin para consultar el gráfico, Neptune puede cargar datos en formato comma-separated-values (`CSV`), como se describe en. [Formato de datos de carga de Gremlin](bulk-load-tutorial-format-gremlin.md)

  Si utiliza openCypher para consultar el gráfico, Neptune también puede cargar datos en un formato `CSV` específico de openCypher, como se describe en [Formato de carga para los datos de openCypher](bulk-load-tutorial-format-opencypher.md).

  Si utiliza SPARQL, Neptune puede cargar los datos en una serie de formatos RDF, tal y como se describe en [Formatos de los datos de carga de RDF](bulk-load-tutorial-format-rdf.md).
+ Un rol de IAM para que la instancia de base de datos de Neptune asuma que tiene una política de IAM que permite el acceso a los archivos de datos en el bucket de S3. La política debe conceder permisos de lectura y lista.

   Para obtener información acerca de cómo crear un rol con acceso a Amazon S3 y, después, asociarlo a un clúster de Neptune, consulte [Requisitos previos: rol de IAM y acceso a Amazon S3](bulk-load-tutorial-IAM.md).
**nota**  
La API `Load` de Neptune necesita acceso de lectura solo para los archivos de datos. No es necesario que la política de IAM conceda acceso de escritura o acceso al bucket completo.
+ Un punto de conexión de VPC de Amazon S3. Para obtener más información, consulte la sección [Creación de un punto de conexión de VPC de Amazon S3](#bulk-load-prereqs-s3).

### Creación de un punto de conexión de VPC de Amazon S3
<a name="bulk-load-prereqs-s3"></a>

El programa de carga de Neptune requiere un punto de conexión de VPC para Amazon S3.

**Para configurar el acceso a Amazon S3**

1. Inicie sesión en la consola de Amazon VPC Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. En el panel de navegación izquierdo, seleccione **Puntos de conexión**.

1. Seleccione **Crear punto de conexión**.

1. Elija el **Service Name (Nombre del servicio)** `com.amazonaws.region.s3`.
**nota**  
Si la región indicada es incorrecta, asegúrese de que la región de la consola es correcta.

1. Elija la VPC que contiene la instancia de base de datos de Neptune.

1. Seleccione la casilla de verificación situada junto a las tablas de ruteo asociadas a las subredes relacionadas con el clúster. Si solo tiene una tabla de ruteo, debe seleccionar esa casilla.

1. Seleccione **Crear punto de conexión**.

Para obtener más información acerca de la creación del punto de conexión, consulte [Puntos de conexión de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html#create-vpc-endpoint) en la *Guía del usuario de Amazon VPC*. Para obtener información acerca de las limitaciones de los puntos de conexión de VPC, consulte [VPC Endpoints for Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html).

**Para cargar datos en una instancia de base de datos de Neptune**

1. Copie los archivos de datos en un bucket de Amazon S3. El bucket de S3 debe estar en la misma AWS región que el clúster que carga los datos.

   Puede usar el siguiente AWS CLI comando para copiar los archivos al bucket.
**nota**  
No es necesario ejecutar este comando desde la instancia de Amazon EC2.

   ```
   aws s3 cp data-file-name s3://bucket-name/object-key-name
   ```
**nota**  
En Amazon S3, un **nombre de una clave de objeto** es la ruta completa de un archivo, incluido el nombre de este.  
*Ejemplo:* en el comando `aws s3 cp datafile.txt s3://examplebucket/mydirectory/datafile.txt`, el nombre de la clave de objeto es **`mydirectory/datafile.txt`**.

   Como alternativa, puede usar el Consola de administración de AWS para cargar archivos al bucket de S3. Abra la consola Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)y elija un bucket. En la esquina superior izquierda, elija **Upload (Cargar)** para cargar los archivos.

1. Desde una ventana de la línea de comandos, introduzca lo siguiente para ejecutar el programa de carga de Neptune con los valores correctos para su punto de conexión, la ruta de Amazon S3, el formato y el ARN del rol de IAM.

   El parámetro `format` puede tener cualquiera de los siguientes valores: `csv` para Gremlin, `opencypher` para openCypher o `ntriples`, `nquads`, `turtle` y `rdfxml` para RDF. Para obtener información acerca del resto de parámetros, consulte [Comando del programa de carga de Neptune](load-api-reference-load.md).

   Para obtener información acerca de cómo encontrar el nombre de host de la instancia de base de datos de Neptune, consulte la sección [Conexión a los puntos de conexión de Amazon Neptune](feature-overview-endpoints.md).

   El parámetro de región debe coincidir con la región del clúster y del bucket de S3.

Amazon Neptune está disponible en las siguientes regiones: AWS 
   + Este de EE. UU. (Norte de Virginia): `us-east-1`
   + Este de EE. UU. (Ohio): `us-east-2`
   + Oeste de EE. UU. (Norte de California): `us-west-1`
   + Oeste de EE. UU. (Oregón): `us-west-2`
   + Canadá (centro): `ca-central-1`
   + Canadá oeste (Calgary): `ca-west-1`
   + América del Sur (São Paulo): `sa-east-1`
   + Europa (Estocolmo): `eu-north-1`
   + Europa (España): `eu-south-2`
   + Europa (Irlanda): `eu-west-1`
   + Europa (Londres): `eu-west-2`
   + Europa (París): `eu-west-3`
   + Europa (Fráncfort): `eu-central-1`
   + Medio Oriente (Baréin): `me-south-1`
   + Medio Oriente (EAU): `me-central-1`
   + Israel (Tel Aviv):   `il-central-1`
   + África (Ciudad del Cabo): `af-south-1`
   + Asia Pacífico (Hong Kong): `ap-east-1`
   + Asia-Pacífico (Tokio): `ap-northeast-1`
   + Asia-Pacífico (Seúl): `ap-northeast-2`
   + Asia-Pacífico (Osaka): `ap-northeast-3`
   + Asia-Pacífico (Singapur): `ap-southeast-1`
   + Asia-Pacífico (Sídney): `ap-southeast-2`
   + Asia-Pacífico (Yakarta): `ap-southeast-3`
   + Asia Pacífico (Melbourne): `ap-southeast-4`
   + Asia Pacífico (Malasia): `ap-southeast-5`
   + Asia-Pacífico (Bombay): `ap-south-1`
   + Asia Pacífico (Hyderabad): `ap-south-2`
   + China (Pekín): `cn-north-1`
   + China (Ningxia): `cn-northwest-1`
   + AWS GovCloud (EE. UU.-Oeste): `us-gov-west-1`
   + AWS GovCloud (EEUU-Este): `us-gov-east-1`

------
#### [ AWS CLI ]

   ```
   aws neptunedata start-loader-job \
     --endpoint-url https://your-neptune-endpoint:port \
     --source "s3://bucket-name/object-key-name" \
     --format "format" \
     --iam-role-arn "arn:aws:iam::account-id:role/role-name" \
     --s3-bucket-region "region" \
     --no-fail-on-error \
     --parallelism "MEDIUM" \
     --no-update-single-cardinality-properties \
     --queue-request \
     --dependencies "load_A_id" "load_B_id"
   ```

   Para obtener más información, consulte [start-loader-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/start-loader-job.html)la Referencia de AWS CLI comandos.

------
#### [ SDK ]

   ```
   import boto3
   from botocore.config import Config
   
   client = boto3.client(
       'neptunedata',
       endpoint_url='https://your-neptune-endpoint:port',
       config=Config(read_timeout=None, retries={'total_max_attempts': 1})
   )
   
   response = client.start_loader_job(
       source='s3://bucket-name/object-key-name',
       format='format',
       iamRoleArn='arn:aws:iam::account-id:role/role-name',
       s3BucketRegion='region',
       failOnError=False,
       parallelism='MEDIUM',
       updateSingleCardinalityProperties=False,
       queueRequest=True,
       dependencies=['load_A_id', 'load_B_id']
   )
   
   print(response)
   ```

------
#### [ awscurl ]

   ```
   awscurl https://your-neptune-endpoint:port/loader \
     --region us-east-1 \
     --service neptune-db \
     -X POST \
     -H 'Content-Type: application/json' \
     -d '{
           "source" : "s3://bucket-name/object-key-name",
           "format" : "format",
           "iamRoleArn" : "arn:aws:iam::account-id:role/role-name",
           "region" : "region",
           "failOnError" : "FALSE",
           "parallelism" : "MEDIUM",
           "updateSingleCardinalityProperties" : "FALSE",
           "queueRequest" : "TRUE",
           "dependencies" : ["load_A_id", "load_B_id"]
         }'
   ```

**nota**  
En este ejemplo se supone que sus AWS credenciales están configuradas en su entorno. *us-east-1*Sustitúyala por la región de tu cúmulo de Neptuno.

------
#### [ curl ]

   ```
   curl -X POST https://your-neptune-endpoint:port/loader \
     -H 'Content-Type: application/json' \
     -d '{
           "source" : "s3://bucket-name/object-key-name",
           "format" : "format",
           "iamRoleArn" : "arn:aws:iam::account-id:role/role-name",
           "region" : "region",
           "failOnError" : "FALSE",
           "parallelism" : "MEDIUM",
           "updateSingleCardinalityProperties" : "FALSE",
           "queueRequest" : "TRUE",
           "dependencies" : ["load_A_id", "load_B_id"]
         }'
   ```

------

   Para obtener información acerca de cómo crear y asociar un rol de IAM a un clúster de Neptune, consulte [Requisitos previos: rol de IAM y acceso a Amazon S3](bulk-load-tutorial-IAM.md).
**nota**  
Consulte [Parámetros de solicitudes del programa de carga de Neptune](load-api-reference-load.md#load-api-reference-load-parameters) para obtener información detallada sobre los parámetros de solicitud de carga. En resumen:  
El parámetro `source` acepta un URI de Amazon S3 que apunta a un archivo único o a una carpeta. Si especifica una carpeta, Neptune carga todos los archivos de datos en esta.  
La carpeta puede contener varios archivos de vértice y varios archivos de borde.  
El URI puede tener cualquiera de los siguientes formatos:  
`s3://bucket_name/object-key-name`
`https://s3.amazonaws.com/bucket_name/object-key-name`
`https://s3-us-east-1.amazonaws.com/bucket_name/object-key-name`
Este parámetro `format` puede ser uno de los siguientes:  
Formato CSV de Gremlin (`csv`) para gráfico de propiedades de Gremlin
Formato CSV de openCypher (`opencypher`) para gráficos de propiedades de openCypher
Formato N -Triples (`ntriples`) para RDF/SPARQL
Formato N-Quads (`nquads`) para RDF/SPARQL
Formato RDF/XML (`rdfxml`) para RDF/SPARQL
Formato Turtle (`turtle`) para RDF/SPARQL
El parámetro opcional `parallelism` le permite restringir el número de subprocesos utilizados en el proceso de carga masiva. Se puede establecer en `LOW`, `MEDIUM`, `HIGH` o `OVERSUBSCRIBE`.  
Cuando `updateSingleCardinalityProperties` se establece en `"FALSE"`, el cargador devuelve un error si se proporciona más de un valor en un archivo de origen que se está cargando para una propiedad de borde o de vértice de cardinalidad única.  
Si `queueRequest` se establece en `"TRUE"`, la solicitud de carga se colocará en una cola si ya se está ejecutando un trabajo de carga.  
El parámetro `dependencies` hace que la ejecución de la solicitud de carga dependa de la finalización correcta de uno o más trabajos de carga que ya se han colocado en la cola.

1. El programa de carga de Neptune devuelve un `id` de tarea que le permite comprobar el estado o cancelar el proceso de carga; por ejemplo:

   ```
   {
       "status" : "200 OK",
       "payload" : {
           "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5"
       }
   }
   ```

1. Escriba lo siguiente para obtener el estado de la carga con el `loadId` del **paso 3**:

------
#### [ AWS CLI ]

   ```
   aws neptunedata get-loader-job-status \
     --endpoint-url https://your-neptune-endpoint:port \
     --load-id ef478d76-d9da-4d94-8ff1-08d9d4863aa5
   ```

   Para obtener más información, consulte [get-loader-job-status](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/get-loader-job-status.html)la Referencia de AWS CLI comandos.

------
#### [ SDK ]

   ```
   import boto3
   from botocore.config import Config
   
   client = boto3.client(
       'neptunedata',
       endpoint_url='https://your-neptune-endpoint:port',
       config=Config(read_timeout=None, retries={'total_max_attempts': 1})
   )
   
   response = client.get_loader_job_status(
       loadId='ef478d76-d9da-4d94-8ff1-08d9d4863aa5'
   )
   
   print(response)
   ```

------
#### [ awscurl ]

   ```
   awscurl 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5' \
     --region us-east-1 \
     --service neptune-db
   ```

**nota**  
En este ejemplo se supone que sus AWS credenciales están configuradas en su entorno. *us-east-1*Sustitúyala por la región de tu cúmulo de Neptuno.

------
#### [ curl ]

   ```
   curl -G 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5'
   ```

------

   Si el estado de la carga muestra un error, puede solicitar un estado más detallado y una lista de los errores. Para obtener más información y ejemplos, consulta [API de Neptune Loader Get-Status](load-api-reference-status.md).

1. (Opcional) Cancele la tarea `Load`.

   Escriba lo siguiente `Delete` la tarea del programa de carga con el `id` de tarea del **paso 3**:

------
#### [ AWS CLI ]

   ```
   aws neptunedata cancel-loader-job \
     --endpoint-url https://your-neptune-endpoint:port \
     --load-id ef478d76-d9da-4d94-8ff1-08d9d4863aa5
   ```

   Para obtener más información, consulte [cancel-loader-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/cancel-loader-job.html)la Referencia de AWS CLI comandos.

------
#### [ SDK ]

   ```
   import boto3
   from botocore.config import Config
   
   client = boto3.client(
       'neptunedata',
       endpoint_url='https://your-neptune-endpoint:port',
       config=Config(read_timeout=None, retries={'total_max_attempts': 1})
   )
   
   response = client.cancel_loader_job(
       loadId='ef478d76-d9da-4d94-8ff1-08d9d4863aa5'
   )
   
   print(response)
   ```

------
#### [ awscurl ]

   ```
   awscurl 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5' \
     --region us-east-1 \
     --service neptune-db \
     -X DELETE
   ```

**nota**  
En este ejemplo se supone que sus AWS credenciales están configuradas en su entorno. *us-east-1*Sustitúyala por la región de tu cúmulo de Neptuno.

------
#### [ curl ]

   ```
   curl -X DELETE 'https://your-neptune-endpoint:port/loader/ef478d76-d9da-4d94-8ff1-08d9d4863aa5'
   ```

------

   El comando `DELETE` devuelve el código HTTP `200 OK` si la cancelación se realiza correctamente.

   Los datos de los archivos de la tarea de carga que han terminado de cargarse no se revierten, Los datos permanecen en la instancia de base de datos de Neptune.