Charger un fichier JSON de documents délimités par des lignes dans une collection

Pour charger des données à partir de collections dans le nuage, vous devez d'abord stocker vos données d'identification de stockage d'objets dans votre base de données d'intelligence artificielle autonome, puis utiliser la procédure DBMS_CLOUD.COPY_COLLECTION pour charger des documents dans une collection.

Cet exemple charge des 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 d'un tel fichier. 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 votre base de données, copiez le fichier dans votre magasin d'objets :

  • Créez un seau dans le magasin d'objets. Par exemple, créez un seau Oracle Cloud Infrastructure Object Storage à partir du lien Oracle Cloud Infrastructure Object Storage, puis, dans le compartiment sélectionné, cliquez sur Créer un seau, ou utilisez une commande telle que la commande d'interface de ligne de commande OCI suivante pour créer un seau :

    oci os bucket create --name fruit_bucket -c <compartment id>
  • Copiez le fichier JSON dans le seau du magasin 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"

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

  1. Stockez vos données d'identification de magasin d'objets à l'aide de la procédure DBMS_CLOUD.CREATE_CREDENTIAL, comme illustré 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 données d'identification dans la base de données dans un format chiffré. Vous pouvez utiliser n'importe quel nom pour les données d'identification. Notez que cette étape n'est requise qu'une seule fois, sauf si les données d'identification du magasin d'objets changent. Une fois les données d'identification stockées, vous pouvez utiliser le même nom pour charger tous les documents.

    La création de données d'identification pour accéder au magasin d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les données d'identification du principal de ressource. Pour plus d'informations, voir Utiliser un principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.

    Voir Procédure CREATE_CREDENTIAL pour des informations détaillées sur les paramètres.

    Note

    Certains outils tels que SQL*Plus et SQL Developer utilisent le caractère esperluette (&) en tant que caractère spécial. Si votre mot de passe contient le caractère esperluette, utilisez la commande SET DEFINE OFF dans ces outils, comme illustré dans l'exemple, pour désactiver le caractère spécial et obtenir les données 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 données d'identification créées à l'étape précédente. Le paramètre credential_name doit être conforme aux conventions d'attribution de nom d'objet Oracle. Pour plus d'informations, voir Règles d'attribution de nom aux objets de base de données.

    • file_uri_list : Liste séparée par des virgules des fichiers sources à charger.

    • format : Définit les options que vous pouvez spécifier 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é génère une erreur.

      Si les données de vos fichiers sources sont chiffrées, déchiffrez les données en spécifiant le paramètre format avec l'option encryption. Voir Décrypter les données lors de l'importation à partir du stockage d'objets pour plus d'informations sur le déchiffrement des données.

      Pour plus d'informations, voir Options de format d'ensemble DBMS_CLOUD.

    namespace-string est l'espace de noms du stockage d'objets Oracle Cloud Infrastructure et fruit_bucket est le nom du seau. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets et Aperçu du stockage d'objets.

    Pour des informations détaillées sur les paramètres, voir ProcédureCOPY_COLLECTION.

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