Chargement d'un fichier JSON de documents délimités par des lignes 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'objets dans votre instance Autonomous Database, puis utiliser la procédure DBMS_CLOUD.COPY_COLLECTION pour charger des documents dans une collection.

Cet exemple charge les valeurs JSON à partir d'un fichier délimité par des lignes et utilise le fichier JSON myCollection.json. Chaque valeur, chaque ligne, est chargée dans une collection de votre base de données en tant que document unique.

Voici un exemple de fichier de ce type. Il comporte trois lignes, avec un objet par ligne. Chacun de ces objets est chargé en tant que document JSON distinct.

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

Avant de charger les données de myCollection.json dans la base de données, copiez le fichier dans la banque d'objets :

  • 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, puis, dans le compartiment sélectionné, cliquez sur Créer un bucket ou utilisez une commande telle que la commande d'interface de ligne de commande OCI suivante pour créer un bucket :

    oci os bucket create --name fruit_bucket -c <compartment id>
  • Copiez le fichier JSON dans le bucket de banque d'objets. Par exemple, utilisez la commande d'interface de ligne de commande OCI suivante pour copier le fichier JSON vers le fichier fruit_bucket sur Oracle Cloud Infrastructure Object Storage :

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

Chargez le fichier JSON de la banque d'objets dans une collection nommée fruit sur la base de données comme suit :

  1. Stockez les informations d'identification de la 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 charger tous les documents.

    La création d'informations d'identification pour accéder à la banque d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les informations d'identification de principal de ressource. Pour plus d'informations, reportez-vous à Utilisation du principal de ressource pour accéder à des ressources Oracle Cloud Infrastructure.

    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 le caractère esperluette (&) comme caractère spécial. Si votre mot de passe contient l'esperluette, utilisez la commande SET DEFINE OFF dans ces outils, comme indiqué dans l'exemple, pour désactiver le caractère spécial et obtenir les informations d'identification créées 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 => '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;
    /
    

    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 lors du 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écryptez les données en indiquant le paramètre format avec l'option encryption. Pour plus d'informations sur le décryptage des données, reportez-vous à Décryptage des données lors de l'import à partir d'Object Storage.

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

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

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

    La collection fruit de la base de données contient désormais un document pour chaque ligne du fichier myCollection.json.