Carga de un archivo JSON de documentos delimitados por líneas en una recopilación

Para cargar datos de recopilaciones en la nube, primero debe almacenar sus credenciales de almacenamiento de objetos en su instancia de Autonomous Database y, a continuación, utilizar el procedimiento DBMS_CLOUD.COPY_COLLECTION para cargar documentos en una recopilación.

En este ejemplo, se cargan los valores JSON de un archivo delimitado por líneas y se utiliza el archivo JSON myCollection.json. Cada valor, cada línea, se carga en una recopilación de la base de datos como un único documento.

A continuación, se muestra un ejemplo de este tipo de archivo. Tiene tres líneas, con un objeto por línea. Cada uno de esos objetos se carga como un documento JSON independiente.

{ "name" : "apple", "count": 20 }
{ "name" : "orange", "count": 42 }
{ "name" : "pear", "count": 10 }

Antes de cargar los datos de myCollection.json en la base de datos, copie el archivo en el almacén de objetos:

  • Crear un cubo en el almacén de objetos. Por ejemplo, cree un cubo de Oracle Cloud Infrastructure Object Storage desde el enlace de Oracle Cloud Infrastructure Object Storage y, a continuación, en el compartimento seleccionado, haga clic en Crear cubo o utilice un comando como el siguiente comando de la CLI de OCI para crear un cubo:

    oci os bucket create --name fruit_bucket -c <compartment id>
  • Copie el archivo JSON en el cubo del almacén de objetos. Por ejemplo, utilice el siguiente comando de la CLI de OCI para copiar el archivo JSON en fruit_bucket en Oracle Cloud Infrastructure Object Storage:

    
    oci os object put --bucket-name fruit_bucket \
                      --file "myCollection.json"

Cargue el archivo JSON del almacén de objetos en una recopilación denominada fruit de la siguiente forma en la base de datos:

  1. Almacene las credenciales del almacén de objetos mediante el procedimiento DBMS_CLOUD.CREATE_CREDENTIAL, como se muestra en el siguiente ejemplo:
    SET DEFINE OFF
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password'
      );
    END;
    /

    Esta operación almacena las credenciales en la base de datos en un formato cifrado. Puede utilizar cualquier nombre para el nombre de credencial. Tenga en cuenta que este paso solo es necesario una vez, a menos que cambien las credenciales del almacén de objetos. Una vez almacenadas las credenciales, puede utilizar el mismo nombre de credencial para cargar todos los documentos.

    No es necesario crear una credencial para acceder al almacén de objetos de Oracle Cloud Infrastructure si activa las credenciales de entidad de recurso. Consulte Uso de la entidad de recurso para acceder a los Recursos de Oracle Cloud Infrastructure para obtener más información.

    Consulte el procedimiento CREATE_CREDENTIAL para obtener información detallada sobre los parámetros.

    Nota

    Algunas herramientas como SQL*Plus y SQL Developer utilizan el carácter de ampersand (&) como carácter especial. Si tiene el carácter ampersand en la contraseña, utilice el comando SET DEFINE OFF en esas herramientas, como se muestra en el ejemplo, para desactivar el carácter especial y obtener la credencial creada correctamente.
  2. Cargue los datos en una recopilación mediante el procedimiento DBMS_CLOUD.COPY_COLLECTION.
    
    BEGIN  
     DBMS_CLOUD.COPY_COLLECTION(    
        collection_name => 'fruit',
        credential_name => 'DEF_CRED_NAME',
        file_uri_list   =>
          'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/fruit_bucket/o/myCollection.json',
        format          =>
          JSON_OBJECT('recorddelimiter' value '''\n''')  );
    END;
    /
    

    Los parámetros son:

    • collection_name: es el nombre de la recopilación de destinos.

    • credential_name: es el nombre de la credencial creada en el paso anterior. El parámetro credential_name debe cumplir las convenciones de nomenclatura de objetos de Oracle. Consulte Reglas de nomenclatura de objetos de base de datos para obtener más información.

    • file_uri_list: es una lista delimitada por comas de los archivos del origen que desea cargar.

    • format: define las opciones de las que puede especificar para describir el formato del archivo origen. Las opciones de formato characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays están soportadas al cargar datos JSON. Cualquier otro formato especificado producirá un error.

      Si los datos de los archivos de origen están cifrados, descifre los datos especificando el parámetro format con la opción encryption. Consulte Descifrar datos al importar desde Object Storage para obtener más información sobre el descifrado de datos.

      Consulte DBMS_CLOUD Package Format Options para obtener más información.

    Donde namespace-string es el espacio de nombres de almacenamiento de objetos de Oracle Cloud Infrastructure y fruit_bucket es el nombre del cubo. Consulte Descripción de los Espacios de Nombres de Object Storage y Visión General de Object Storage para más información.

    Para obtener información detallada sobre los parámetros, consulte el Procedimiento COPY_COLLECTION.

    La recopilación fruit de la base de datos ahora contiene un documento para cada línea del archivo myCollection.json.