Caricare i dati dai file nel cloud

Il package PL/SQL DBMS_CLOUD fornisce supporto per il caricamento dei dati dai file nel cloud alle tabelle create in Autonomous AI Database on Dedicated Exadata Infrastructure.

È possibile caricare dati da formati di file diversi utilizzando le seguenti procedure PL/SQL fornite da DBMS_CLOUD:

Prima di caricare i dati dai file, assicurarsi che:

Il package DBMS_CLOUD supporta il caricamento dai file nei servizi cloud seguenti: Oracle Cloud Infrastructure Object Storage, Oracle Cloud Infrastructure Object Storage Classic, Azure Blob Storage e Amazon S3.

Crea credenziali

Scopri come memorizzare le credenziali dello storage degli oggetti cloud utilizzando la procedura DBMS_CLOUD.CREATE_CREDENTIAL.

Eseguire la procedura DBMS_CLOUD.CREATE_CREDENTIAL utilizzando qualsiasi strumento di database, ad esempio SQL*Plus, SQL Developer o Database Actions (strumento SQL Developer basato su Web). Ad esempio:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@oracle.com',
    password => 'password'
  );
END;
/

I valori forniti per username e password dipendono dal servizio di storage degli oggetti cloud in uso:

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. Una volta memorizzate le credenziali, è possibile utilizzare lo stesso nome credenziale per tutti i caricamenti dati.

Carica dati da file di testo

Scopri come caricare i dati dai file di testo nel cloud in Autonomous AI Database utilizzando la procedura DBMS_CLOUD.COPY_DATA.

Il file di origine in questo esempio, channels.txt, contiene i dati seguenti:

S,Direct Sales,Direct
T,Tele Sales,Direct
C,Catalog,Indirect
I,Internet,Indirect
P,Partners,Others
  1. Memorizzare le credenziali dello storage degli oggetti cloud mediante la procedura DBMS_CREDENTIAL.CREATE_CREDENTIAL. Per ulteriori dettagli, vedere Crea credenziali.</span>

  2. Creare la tabella che conterrà i dati. Ad esempio:

     CREATE TABLE CHANNELS
       (channel_id CHAR(1),
         channel_desc VARCHAR2(20),
         channel_class VARCHAR2(20)
       );
     /
    
  3. Caricare i dati nella tabella utilizzando la procedura DBMS_CLOUD.COPY_DATA. Ad esempio:

     BEGIN
      DBMS_CLOUD.COPY_DATA(
        table_name =>'CHANNELS',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/channels.txt',
        format => json_object('delimiter' value ',')
      );
     END;
     /
    
    

    Di seguito sono riportati i parametri disponibili.

    • table_name: è il nome della tabella di destinazione.

    • credential_name: indica il nome della credenziale creata nel passo precedente.

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

      In questo esempio, file_uri_list è un URI Swift di Oracle Cloud Infrastructure che specifica il file channels.txt nel bucket mybucket nell'area us-phoenix-1. (idthydc0kinr è lo spazio di nomi dello storage degli oggetti in cui risiede il bucket). Per informazioni sui formati URI supportati, vedere Formati URI dello storage degli oggetti cloud.

    • format: definisce le opzioni specificate per descrivere il formato del file di origine. Per informazioni sulle opzioni di formato che è possibile specificare, vedere Parametro formato.

Caricare un file JSON di documenti delimitati in una raccolta

Scopri come caricare un file JSON di documenti delimitati in una raccolta in Autonomous AI Database utilizzando la procedura DBMS_CLOUD.COPY_DATA.

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 nell'Autonomous AI Database come singolo documento.

Ecco 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 }

Procedura

  1. Memorizzare le credenziali dello storage degli oggetti cloud mediante la procedura DBMS_CLOUD.CREATE_CREDENTIAL. Per ulteriori dettagli, vedere Crea credenziali.

  2. Caricare i dati in una raccolta utilizzando la procedura DBMS_CLOUD.COPY_DATA. Ad esempio:

     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.

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

      In questo esempio, file_uri_list è un URI Oracle Cloud Infrastructure Swift che specifica il file myCollection.json nel bucket mybucket nell'area us-phoenix-1. Per informazioni sui formati URI supportati, vedere Formati URI dello storage degli oggetti cloud.

    • format: definisce le opzioni specificate per descrivere il formato del file di origine. Le opzioni di formato characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray sono supportate per il caricamento dei dati JSON. Qualsiasi altro formato specificato genererà un errore. Per informazioni sulle opzioni di formato che è possibile specificare, vedere Parametro formato.

Caricare un array di documenti JSON in una raccolta

Scopri come caricare un array di documenti JSON in una raccolta in Autonomous AI Database utilizzando la procedura DBMS_CLOUD.COPY_COLLECTION.

In questo esempio viene utilizzato il file JSON fruit_array.json. Di seguito viene illustrato il contenuto del file fruit_array.json.

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

Procedura

  1. Memorizzare le credenziali dello storage degli oggetti cloud mediante la procedura DBMS_CLOUD.CREATE_CREDENTIAL. Per ulteriori dettagli, vedere Crea credenziali.

  2. Caricare i dati in una raccolta utilizzando la procedura DBMS_CLOUD.COPY_DATA. Ad esempio:

     BEGIN 
       DBMS_CLOUD.COPY_COLLECTION(    
         collection_name => 'fruits',    
         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;
     /
    

    In questo esempio, si carica un singolo valore JSON che occupa l'intero file. Pertanto, non è necessario specificare un delimitatore di record. Per indicare che non esiste un delimitatore di record, è possibile utilizzare un carattere che non si verifica nel file di input. Ad esempio, è possibile utilizzare il valore "0x''01''" perché questo carattere non si verifica direttamente nel testo JSON.

    Quando il parametro unpackarrays per il valore del formato è impostato su TRUE, l'array di documenti viene caricato come singoli documenti anziché come intero array. Il disimballaggio degli elementi di array è tuttavia limitato a un singolo livello. Se nei documenti sono presenti array nidificati, tali array non vengono decompressi.

    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.

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

      In questo esempio, file_uri_list è un URI Oracle Cloud Infrastructure Swift che specifica il file myCollection.json nel bucket mybucket nell'area us-phoenix-1. Per informazioni sui formati URI supportati, vedere Formati URI dello storage degli oggetti cloud.

    • format: definisce le opzioni specificate per descrivere il formato del file di origine. Le opzioni di formato characterset, compression, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, unpackarray sono supportate per il caricamento dei dati JSON. Qualsiasi altro formato specificato genererà un errore. Per informazioni sulle opzioni di formato che è possibile specificare, vedere Parametro formato.

    Il caricamento di fruit_array.json con DBMS_CLOUD.COPY_COLLECTION mediante l'opzione di formato unpackarrays consente alla procedura di riconoscere i valori di array nell'origine. Pertanto, invece di caricare i dati come un singolo documento, come farebbe per impostazione predefinita, i dati vengono caricati nella raccolta fruits con ogni valore nell'array come un singolo documento.

Copia dati JSON in una tabella esistente

Utilizzare DBMS_CLOUD.COPY_DATA per caricare i dati JSON nel cloud in una tabella.

Il file di origine in questo esempio è un file di dati JSON.

Procedura

  1. Memorizzare le credenziali dell'area di memorizzazione degli oggetti utilizzando la procedura DBMS_CLOUD.CREATE_CREDENTIAL. Ad esempio:

     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. Una volta memorizzate le credenziali, è possibile utilizzare lo stesso nome credenziale per tutti i caricamenti dati.

    Per informazioni dettagliate sui parametri, vedere Procedura CREDENTIAL.

  2. Caricare i dati JSON in una tabella esistente utilizzando la procedura DBMS_CLOUD.COPY_DATA.

    Ad esempio:

     CREATE TABLE WEATHER2
         (WEATHER_STATION_ID VARCHAR2(20),
          WEATHER_STATION_NAME VARCHAR2(50));
     /
    
     BEGIN
       DBMS_CLOUD.COPY_DATA(
           table_name      => 'WEATHER2',
           credential_name => 'DEF_CRED_NAME',
           file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/jsonfiles*',
           format          =>  JSON_OBJECT('type' value 'json', 'columnpath' value '["$.WEATHER_STATION_ID",
               "$.WEATHER_STATION_NAME"]')
         );
     END;
     /
    

    Di seguito sono riportati i parametri disponibili.

    • table_name: è il nome della tabella di destinazione.

    • credential_name: indica il nome della credenziale creata nel passo precedente.

    • file_uri_list: è una lista delimitata da virgole dei file di origine che si desidera caricare. È possibile utilizzare i caratteri jolly nei nomi dei file negli URI. Il carattere "*" può essere utilizzato come caratteri jolly per più caratteri, il carattere "?" può essere utilizzato come caratteri jolly per un singolo carattere.

    • format: per DBMS_CLOUD.COPY_DATA con dati JSON, type è json. Specificare altri valori di formato per definire le opzioni per descrivere il formato del file di origine JSON. Per ulteriori informazioni, vedere DBMS_CLOUD Package Format Options.

    In questo esempio, namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e bucketname è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

    Per informazioni dettagliate sui parametri, vedere Procedura COPY_DATA.

Monitorare e risolvere i problemi relativi al caricamento dei dati

Tutte le operazioni di caricamento dati eseguite utilizzando il package PL/SQL DBMS_CLOUD vengono registrate nelle tabelle dba_load_operations e user_load_operations:

Eseguire una query su queste tabelle per visualizzare informazioni sui caricamenti dati in corso e completati. Ad esempio, utilizzando un'istruzione SELECT con un predicato clausola WHERE nella colonna TYPE, vengono visualizzate le operazioni di caricamento di tipo COPY:

SELECT table_name, owner_name, type, status, start_time, update_time, logfile_table, badfile_table
  FROM user_load_operations WHERE type = 'COPY';
TABLE_NAME OWNER_NAME  TYPE   STATUS     START_TIME                            UPDATE_TIME                          LOGFILE_TABLE   BADFILE_TABLE
---------- ----------- ------- ---------- ---------------------- --------------------- --------------- ------------- ------------- -------------
CHANNELS   SH          COPY   COMPLETED  04-MAR-21 07.38.30.522711000 AM GMT    04-MAR-21 07.38.30.522711000 AM GMT  COPY$1_LOG     COPY$1_BAD

La colonna LOGFILE_TABLE mostra il nome della tabella che è possibile eseguire una query per esaminare il log di un'operazione di caricamento. Ad esempio, la query seguente mostra il log dell'operazione di caricamento:

select * from COPY$21_LOG;

La colonna BADFILE_TABLE mostra il nome della tabella che è possibile eseguire una query per esaminare le righe che hanno rilevato errori durante il caricamento. Ad esempio, l'interrogazione seguente mostra i record rifiutati per l'operazione di caricamento:

select * from COPY$21_BAD;

A seconda degli errori visualizzati nel log e delle righe mostrate nella tabella BADFILE_TABLE specificata, è possibile correggere l'errore specificando le opzioni di formato corrette in DBMS_CLOUD.COPY_DATA.

Nota: le tabelle LOGFILE_TABLE e BADFILE_TABLE vengono memorizzate per due giorni per ogni operazione di caricamento e quindi rimosse automaticamente.

dbmscloud-per-oggetti-e-file.md#GUID-CEC0CA63-B77F-4D64-B70F-1E8476AE3ED6

Per informazioni sulla cancellazione della tabella user_load_operations, vedere Procedura DELETE_ALL_OPERATIONS.

Oggetti JSON testuali che rappresentano valori scalari estesi

I dati JSON binari nativi (formato OSON) estendono il linguaggio JSON aggiungendo tipi scalari, come la data, che corrispondono ai tipi SQL e non fanno parte dello standard JSON. Oracle Database supporta anche l'uso di oggetti JSON testuali che rappresentano i valori scalari JSON, inclusi tali valori non standard.

Quando si creano dati JSON binari nativi da dati JSON testuali che contengono tali oggetti estesi, è possibile facoltativamente essere sostituiti con valori scalari JSON (binari nativi) corrispondenti.

Un esempio di oggetto esteso è {"$numberDecimal":31}. Rappresenta un valore scalare JSON del tipo non standard numero decimale e, se interpretato come tale, viene sostituito da un numero decimale in formato binario nativo.

Ad esempio, quando si utilizza il costruttore del tipo di dati JSON, JSON, se si utilizza la parola chiave EXTENDED, gli oggetti estesi riconosciuti nell'input testuale vengono sostituiti con i valori scalari corrispondenti nel risultato JSON binario nativo. Se non si include la parola chiave EXTENDED, non viene eseguita alcuna sostituzione di questo tipo; gli oggetti JSON estesi testuali vengono semplicemente convertiti così come sono in oggetti JSON nel formato binario nativo.

Nella direzione opposta, quando si utilizza la funzione SQL/JSON json_serialize per serializzare i dati JSON binari come dati JSON testuali (VARCHAR2, CLOB o BLOB), è possibile utilizzare la parola chiave EXTENDED per sostituire i valori scalari JSON (binari nativi) con gli oggetti JSON estesi testuali corrispondenti.

Nota: se il database utilizzato è Oracle Autonomous AI Database, è possibile utilizzare la procedura PL/SQL DBMS_CLOUD.copy_collection per creare una raccolta di documenti JSON da un file di dati JSON, ad esempio quello prodotto dai database NoSQL comuni, incluso Oracle NoSQL Database.

Se si utilizza ejson come valore del parametro type della procedura, gli oggetti JSON estesi riconosciuti nel file di input vengono sostituiti con i valori scalari corrispondenti nella raccolta JSON binaria nativa risultante. Nell'altra direzione, è possibile utilizzare la funzione json_serialize con la parola chiave EXTENDED per sostituire i valori scalari con oggetti JSON estesi nei dati JSON testuali risultanti.

Questi sono i due casi d'uso principali per gli oggetti estesi:

A scopo di scambio, puoi includere dati JSON da un file prodotto da database NoSQL comuni, incluso Oracle NoSQL Database, convertendo gli oggetti estesi in scalari JSON binari nativi. Nell'altra direzione, puoi esportare i dati JSON binari nativi come dati testuali, sostituendo i valori JSON scalari specifici di Oracle con gli oggetti JSON estesi testuali corrispondenti.

Suggerimento: come esempio di ispezione, considerare un oggetto come {"dob" : "2000-01-02T00:00:00"} come risultato della serializzazione dei dati JSON nativi. "2000-01-02T00:00:00" è il risultato della serializzazione di un valore binario nativo di tipo data oppure il valore binario nativo è solo una stringa? L'utilizzo di json_serialize con la parola chiave EXTENDED consente di conoscerlo.

Il mapping dei campi oggetto estesi ai tipi JSON scalari è, in generale, molti a uno: più di un tipo di oggetto JSON esteso può essere mappato a un determinato valore scalare. Ad esempio, gli oggetti JSON estesi {"$numberDecimal":"31"} e {"$numberLong:"31"} vengono entrambi tradotti come valore 31 del numero di tipo scalare in lingua JSON e il metodo elemento type() restituisce "number" per ciascuno di questi scalari JSON.

Il metodo articolo type() riporta il tipo scalare in lingua JSON del relativo valore di destinazione (come stringa JSON). Alcuni valori scalari possono essere distinti internamente, anche se hanno lo stesso tipo scalare. Ciò consente in genere alla funzione json_serialize (con la parola chiave EXTENDED) di ricostruire l'oggetto JSON esteso originale. Tali valori scalari vengono distinti internamente utilizzando diversi tipi SQL per implementarli o trascinandoli con il tipo di oggetto JSON esteso da cui sono stati derivati.

Quando json_serialize ricostruisce l'oggetto JSON esteso originale, il risultato non è sempre testualmente identico all'originale, ma è sempre semanticamente equivalente. Ad esempio, {"$numberDecimal":"31"} e {"$numberDecimal":31} sono semanticamente equivalenti, anche se i valori dei campi differiscono per tipo (stringa e numero). Vengono tradotti con lo stesso valore interno e ognuno di essi viene contrassegnato come derivato da un oggetto esteso $numberDecimal (stessa tag). Tuttavia, se serializzato, il risultato per entrambi è {"$numberDecimal":31}. Oracle utilizza sempre il tipo più direttamente pertinente per il valore del campo, che in questo caso è il valore JSON 31, di tipo scalare.

La seguente tabella presenta le corrispondenze tra i vari tipi utilizzati. Esegue il mapping tra (1) tipi di oggetti estesi utilizzati come input, (2) tipi segnalati dal metodo elemento type(), (3) tipi SQL utilizzati internamente, (4) tipi di lingua JSON standard utilizzati come output dalla funzione json_serialize e (5) tipi di oggetti estesi generati da json_serialize quando viene specificata la parola chiave EXTENDED.

Tipo di oggetto esteso (input) Tipo scalare JSON Oracle (riportato da type()) Tipo scalare SQL Tipo scalare JSON standard (output) Tipo di oggetto esteso (output)
$numberDouble con valore un numero JSON, una stringa che rappresenta il numero o una di queste stringhe: "Infinity", "-Infinity", "Inf", "-Inf", "Nan"(vedere Nota a piè di pagina 1) double BINARY_DOUBLE number $numberDouble con valore un numero JSON o una di queste stringhe: "Inf", "-Inf", "Nan"(Vedi nota a piè di pagina 2)
$numberFloat con valore uguale a quello di $numberDouble float BINARY_FLOAT number $numberFloat con valore uguale a quello di $numberDouble
$numberDecimal con valore uguale a quello di $numberDouble number NUMBER number $numberDecimal con valore uguale a quello di $numberDouble
$numberInt con valore un numero intero a 32 bit firmato o una stringa che rappresenta il numero number NUMBER number $numberInt con valore uguale a quello di $numberDouble
$numberLong con valore un numero JSON o una stringa che rappresenta il numero number NUMBER number $numberLong con valore uguale a quello di $numberDouble

$binary con il valore uno dei seguenti:

  • una stringa di base-64 caratteri
  • Oggetto con i campi base64 e subType, i cui valori sono una stringa di caratteri base-64 e il numero 0 (binario arbitrario) o 4 (UUID), rispettivamente

Quando il valore è una stringa di base-64 caratteri, l'oggetto esteso può anche avere il campo $subtype con il valore 0 o 4, espresso come un intero di un byte (0-255) o una stringa esadecimale di 2 caratteri.

binario BLOB o RAW

stringa

La conversione è equivalente all'uso della funzione SQL rawtohex.

Uno dei seguenti:
  • $binary con valore una stringa di base-64 caratteri
  • $rawid con valore una stringa di 32 caratteri esadecimali, se l'input contiene un valore subType pari a 4 (UUID)
$oid con il valore una stringa di 24 caratteri esadecimali binario RAW(12)

stringa

La conversione è equivalente all'uso della funzione SQL rawtohex.

$rawid con il valore una stringa di 24 caratteri esadecimali
$rawhex con valore una stringa con un numero pari di caratteri esadecimali binario RAW

stringa

La conversione è equivalente all'uso della funzione SQL rawtohex.

$binary con valore una stringa di base-64 caratteri, riempito a destra con = caratteri
$rawid con valore una stringa di 24 o 32 caratteri esadecimali binario RAW

stringa

La conversione è equivalente all'uso della funzione SQL rawtohex.

$rawid
$oracleDate con valore stringa di data ISO 8601 data DATE stringa $oracleDate con valore stringa di data ISO 8601
$oracleTimestamp con valore una stringa di indicatore orario ISO 8601 indicatore orario TIMESTAMP stringa $oracleTimestamp con valore una stringa di indicatore orario ISO 8601
$oracleTimestampTZ con valore una stringa di indicatore orario ISO 8601 con offset di fuso orario numerico o con Z indicatore orario con fuso orario TIMESTAMP WITH TIME ZONE stringa $oracleTimestampTZ con valore una stringa di indicatore orario ISO 8601 con offset di fuso orario numerico o con Z

$date con valore uno dei seguenti:

  • Conteggio di millisecondi interi dal 1° gennaio 1990
  • Stringa indicatore orario ISO 8601
  • Oggetto con campo numberLong con valore in millisecondi interi dal 1° gennaio 1990
indicatore orario con fuso orario TIMESTAMP WITH TIME ZONE stringa $oracleTimestampTZ con valore una stringa di indicatore orario ISO 8601 con offset di fuso orario numerico o con Z
$intervalDaySecond con valore una stringa di intervallo ISO 8601 come specificato per la funzione SQL to_dsinterval giorniecondoIntervallo INTERVAL DAY TO SECOND stringa $intervalDaySecond con valore una stringa di intervallo ISO 8601 come specificato per la funzione SQL to_dsinterval
$intervalYearMonth con valore una stringa di intervallo ISO 8601 come specificato per la funzione SQL to_yminterval meseannoIntervallo INTERVAL YEAR TO MONTH stringa $intervalYearMonth con valore una stringa di intervallo ISO 8601 come specificato per la funzione SQL to_yminterval

Due campi:

  • Campo $vector con valore di un array i cui elementi sono numeri o le stringhe "Nan", "Inf" e "-Inf" (che rappresenta valori non-a-number e infiniti).

  • Campo $vectorElementType con valore stringa "float32" o "float64". Questi corrispondono rispettivamente ai numeri IEEE a 32 bit e IEEE a 64 bit.

vettore VECTOR array di numeri

Due campi:

  • Campo $vector con valore di un array i cui elementi sono numeri o le stringhe "Nan", "Inf" e "-Inf" (che rappresentano valori non-a-number e infiniti).

  • Campo $vectorElementType con valore stringa "float32" o "float64".

Nota a piè di pagina 1 I valori stringa vengono interpretati senza distinzione di maiuscole e minuscole. Ad esempio, "NAN" "nan" e "nAn" sono accettati ed equivalenti, e in modo simile "INF", "inFinity" e "iNf". I numeri infinitamente grandi ("Infinity" o "Inf") e piccoli ("-Infinity" o "-Inf") sono accettati con la parola intera o l'abbreviazione.

Nota a piè di pagina 2 Nell'output vengono utilizzati solo questi valori stringa. Nessuna versione completa di Infinity o letter-case.

Contenuto correlato