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'objet 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 (ligne) est chargée dans une collection sur 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 à partir de myCollection.json vers 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 permettant de 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 dans fruit_bucket sur Oracle Cloud Infrastructure Object Storage :

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

Pour charger le fichier JSON à partir de la banque d'objets vers une collection nommée fruit sur votre base de données, procédez comme suit :

  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.

    La création d'informations d'identification pour accéder à Oracle Cloud Infrastructure Object Storage 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 aux 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 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 => '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 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 fruit_bucket est le nom du bucket. Pour plus d'informations, reportez-vous à Présentation des espaces de noms Object Storage et à Présentation d'Object Storage.

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

    La collection fruit sur votre base de données contient maintenant un document pour chaque ligne du fichier myCollection.json.