Chargement d'un tableau de documents JSON dans une collection

Pour charger des données à partir de collections dans le cloud, vous devez d'abord stocker vos informations d'identification de stockage d'objet dans votre instance Autonomous Database, puis utiliser la procédure PL/SQL DBMS_CLOUD.COPY_COLLECTION pour charger des documents dans une collection. Cette rubrique explique comment charger des documents dans votre base de données à partir d'un tableau JSON dans un fichier.

Remarque

Vous pouvez également charger des documents à partir d'un tableau JSON dans un fichier vers une collection à l'aide de SODA pour REST. Reportez-vous à Load Purchase-Order Sample Data Using SODA for REST.

Cet exemple utilise le fichier JSON fruit_array.json. Voici le contenu du fichier fruit_array.json :

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

Avant de charger des données dans Autonomous Database, copiez-les dans votre banque d'objets comme suit :

  • Créez un bucket dans la banque d'objets. Par exemple, créez un bucket Oracle Cloud Infrastructure Object Storage à partir du lien Oracle Cloud Infrastructure Object Storage, dans le compartiment sélectionné, en cliquant sur Créer un bucket, ou utilisez un outil de ligne de commande tel que la commande d'interface de ligne de commande OCI suivante :

    oci os bucket create -name json_bucket -c <compartment id>
  • Copiez le fichier JSON dans la banque d'objets. Par exemple, la commande d'interface de ligne de commande OCI suivante copie le fichier JSON fruit_array.json vers la banque d'objets :

    oci os object put --bucket-name json_bucket --file "fruit_array.json"

Chargez le fichier JSON à partir de la banque d'objets vers une collection SODA nommée fruit2 sur votre base de données :

  1. Stockez vos informations d'identification de banque d'objets à l'aide de la procédure DBMS_CLOUD.CREATE_CREDENTIAL, comme indiqué dans l'exemple suivant :
    SET DEFINE OFF
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password'
      );
    END;
    /

    Cette opération stocke les informations d'identification dans la base de données dans un format crypté. Vous pouvez utiliser n'importe quel nom d'informations d'identification. Cette étape est requise une seule fois, sauf si les informations d'identification de banque d'objets changent. Une fois les informations d'identification stockées, vous pouvez utiliser le même nom d'informations d'identification pour le chargement de tous les documents.

    Pour plus d'informations sur les paramètres, reportez-vous à Procédure CREATE_CREDENTIAL.

    Remarque

    Certains outils tels que SQL*Plus et SQL Developer utilisent l'arrondi (&) comme caractère spécial. Si votre mot de passe comporte une esperluette, utilisez la commande SET DEFINE OFF dans ces outils comme indiqué dans l'exemple pour désactiver le caractère spécial et créer les informations d'identification correctement.
  2. Chargez les données dans une collection à l'aide de la procédure DBMS_CLOUD.COPY_COLLECTION.
    
    BEGIN 
      DBMS_CLOUD.COPY_COLLECTION(    
        collection_name => 'fruit2',    
        credential_name => 'DEF_CRED_NAME',    
        file_uri_list => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/json/o/fruit_array.json',
        format => '{"recorddelimiter" : "0x''01''", "unpackarrays" : "TRUE", "maxdocsize" : "10240000"}'
      );
    END;
    /

    Dans cet exemple, vous chargez une valeur JSON unique qui occupe l'intégralité du fichier. Il n'est donc pas nécessaire d'indiquer un séparateur d'enregistrement. Pour indiquer l'absence de délimiteur d'enregistrement, vous pouvez utiliser un caractère qui ne figure pas dans le fichier d'entrée. Dans cet exemple, pour indiquer l'absence de séparateur, le caractère de contrôle 0x01 (SOH) est défini pour charger les documents JSON dans une collection. Par conséquent, vous indiquez une valeur pour recorddelimiter qui ne figure pas dans le fichier JSON. Par exemple, vous pouvez utiliser la valeur "0x''01''" car ce caractère ne figure pas directement dans le texte JSON.

    Lorsque le paramètre unpackarrays pour la valeur de format est défini sur TRUE, le tableau de documents est chargé sous forme de documents individuels plutôt qu'en tant que tableau entier. La décomposition des éléments du tableau est cependant limitée à un seul niveau. S'il existe des tableaux imbriqués dans les documents, ces tableaux ne sont pas décomposés.

    Les paramètres sont les suivants :

    • collection_name : nom de la collection cible.

    • credential_name : nom des informations d'identification créées à l'étape précédente. Le paramètre credential_name doit être conforme aux conventions de dénomination des objets Oracle. Pour plus d'informations, reportez-vous à Règles de dénomination des objets de base de données.

    • file_uri_list : liste des fichiers source à charger séparés par une virgule.

    • format : définit les options que vous pouvez indiquer pour décrire le format du fichier source. Les options de format characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays sont prises en charge pour le chargement des données JSON. Tout autre format spécifié entraîne une erreur.

      Si les données de vos fichiers source sont cryptées, déchiffrez-les en indiquant le paramètre format avec l'option encryption. Pour plus d'informations sur le décryptage des données, reportez-vous à Déchiffrement des données lors de l'import à partir d'Object Storage.

      Pour plus d'informations, reportez-vous à DBMS_CLOUD Options de format de package.

    Dans cet exemple, namespace-string est l'espace de noms de stockage d'objet Oracle Cloud Infrastructure et bucketname est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage.

    Pour obtenir des informations détaillées sur les paramètres, reportez-vous à Procédure COPY_COLLECTION.

Le chargement de fruit_array.json, avec DBMS_CLOUD.COPY_COLLECTION à l'aide de l'option de format unpackarrays, reconnaît les valeurs de tableau dans la source et au lieu de charger les données en tant que document unique, comme par défaut, les données sont chargées dans la collection fruit2 avec chaque valeur du tableau en tant que document unique.