Caricare un file JSON di documenti delimitati da riga in una raccolta

Per caricare i dati dalle raccolte nel cloud, è necessario innanzitutto memorizzare le credenziali di storage degli oggetti in Autonomous Database, quindi utilizzare la procedura DBMS_CLOUD.COPY_COLLECTION per caricare i documenti in una raccolta.

In questo esempio vengono caricati valori JSON da un file delimitato da righe e viene utilizzato il file JSON myCollection.json. Ogni valore, ogni riga, viene caricato in una raccolta sul database come un singolo documento.

Osservare un esempio di file di questo tipo. Ha tre linee, con un oggetto per linea. Ciascuno di questi oggetti viene caricato come documento JSON separato.

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

Prima di caricare i dati da myCollection.json nel database, copiare il file nell'area di memorizzazione degli oggetti:

  • Creare un bucket nell'area di memorizzazione degli oggetti. Ad esempio, creare un bucket Oracle Cloud Infrastructure Object Storage dal collegamento Oracle Cloud Infrastructure Object Storage, quindi nel compartimento selezionato fare clic su Crea bucket o utilizzare un comando come il comando CLI OCI seguente per creare un bucket:

    oci os bucket create --name fruit_bucket -c <compartment id>
  • Copia il file JSON nel bucket dell'area di memorizzazione degli oggetti. Ad esempio, utilizzare il seguente comando OCI CLI per copiare il file JSON in fruit_bucket su Oracle Cloud Infrastructure Object Storage:

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

Caricare il file JSON dall'area di memorizzazione degli oggetti in una raccolta denominata fruit nel database come indicato di seguito.

  1. Memorizzare le credenziali dell'area di memorizzazione degli oggetti utilizzando la procedura DBMS_CLOUD.CREATE_CREDENTIAL, come mostrato nell'esempio riportato di seguito.
    SET DEFINE OFF
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password'
      );
    END;
    /

    Questa operazione memorizza le credenziali nel database in un formato cifrato. È possibile utilizzare qualsiasi nome per il nome della credenziale. Tenere presente che questo passo è obbligatorio una sola volta a meno che le credenziali dell'area di memorizzazione degli oggetti non vengano modificate. Dopo aver memorizzato le credenziali, è possibile utilizzare lo stesso nome credenziale per caricare tutti i documenti.

    La creazione di una credenziale per accedere all'area di memorizzazione degli oggetti di Oracle Cloud Infrastructure non è necessaria se si abilitano le credenziali del principal risorsa. Per ulteriori informazioni, consulta la sezione Usa principal risorsa per accedere alle risorse di Oracle Cloud Infrastructure.

    Per informazioni dettagliate sui parametri, vedere CREATE_CREDENTIAL Procedure.

    Nota

    Alcuni strumenti come SQL*Plus e SQL Developer utilizzano il carattere e commerciale (&) come carattere speciale. Se si dispone del carattere e commerciale nella password, utilizzare il comando SET DEFINE OFF in tali strumenti come mostrato nell'esempio per disabilitare il carattere speciale e ottenere la credenziale creata correttamente.
  2. Caricare i dati in una raccolta utilizzando la procedura 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;
    /
    

    Di seguito sono riportati i parametri disponibili.

    • collection_name: è il nome della raccolta di destinazione.

    • credential_name: indica il nome della credenziale creata nel passo precedente. Il parametro credential_name deve essere conforme alle convenzioni di denominazione degli oggetti Oracle. Per ulteriori informazioni, vedere Regole di denominazione degli oggetti database.

    • file_uri_list: è una lista delimitata da virgole dei file di origine che si desidera caricare.

    • format: definisce le opzioni che è possibile specificare per descrivere il formato del file di origine. Le opzioni di formato characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays sono supportate durante il caricamento dei dati JSON. Qualsiasi altro formato specificato genererà un errore.

      Se i dati nei file di origine vengono cifrati, decifrare i dati specificando il parametro format con l'opzione encryption. Per ulteriori informazioni sulla decifrazione dei dati, vedere Decifrare i dati durante l'importazione dallo storage degli oggetti.

      Per ulteriori informazioni, vedere DBMS_CLOUD Package Format Options.

    Dove namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e fruit_bucket è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti e Panoramica sullo storage degli oggetti.

    Per informazioni dettagliate sui parametri, vedere COPY_COLLECTION Procedure.

    La raccolta fruit nel database ora contiene un documento per ogni riga del file myCollection.json.