Utilizzo della console per inserire i dati della tabella

Scopri come inserire i dati nelle tabelle di Oracle NoSQL Database Cloud Service dalla console NoSQL.

La console NoSQL consente di inserire nuove righe nelle tabelle di Oracle NoSQL Database Cloud Service nelle modalità riportate di seguito.
  1. Modalità di input semplice: è possibile utilizzare questa modalità per fornire i valori per le nuove righe in modo dichiarativo.
  2. Modalità di input JSON avanzata: è possibile utilizzare questa modalità per fornire i valori per le nuove righe in formato JSON.
  3. È possibile utilizzare l'istruzione INSERT per aggiungere una riga. In NoSQL>>Tabelle, scegliere la tabella in cui si desidera aggiungere una riga. In Esplora dati aggiungere l'istruzione INSERT nella casella di testo fornita per l'istruzione SQL ed eseguire il comando.
  4. Puoi anche caricare in blocco i dati da un file locale nella tabella, tramite il browser.

Nota: se la tabella è una tabella attiva globale, l'aggiunta di dati in un'area aggiunge anche i dati a tutte le repliche della tabella regionale.

Inserimento di dati nelle tabelle: modalità di input semplice

Scopri come inserire i dati nelle tabelle di Oracle NoSQL Database Cloud Service utilizzando la modalità di inserimento input semplice.

Per inserire dati nelle tabelle:
  1. Accedere alla console NoSQL dalla console dell'infrastruttura. Vedere Accesso al servizio dalla console dell'infrastruttura.
  2. La console NoSQL elenca tutte le tabelle nella tenancy. Per visualizzare i dettagli della tabella, effettuare una delle operazioni riportate di seguito.
    • Fare clic sul nome della tabella oppure
    • Fare clic sul menu delle azioni corrispondente al nome della tabella e selezionare Visualizza dettagli.
    Viene visualizzata la pagina Dettagli tabella.
  3. Fare clic su Inserisci riga.
  4. Nella finestra Inserisci riga selezionare Input semplice per Modalità di inserimento.
  5. Sono elencate tutte le colonne della tabella. Immettere i dati per le colonne della tabella. Per alcuni tipi di colonna, ad esempio Binario, caricare i dati.

    Nota

    L'immissione di un valore è obbligatoria per tutte le colonne non annullabili della tabella.
  6. Fare clic su Inserisci riga.
    Il record viene inserito nella tabella.
Per visualizzare la Guida per la pagina corrente, fare clic sul collegamento della Guida nella parte superiore della pagina.

Inserimento di dati nelle tabelle: modalità di input JSON avanzata

Scopri come inserire i dati nelle tabelle di Oracle NoSQL Database Cloud Service utilizzando la modalità di input JSON avanzata.

Per inserire dati nelle tabelle:
  1. Accedere alla console NoSQL dalla console dell'infrastruttura. Vedere Accesso al servizio dalla console dell'infrastruttura.
  2. La console NoSQL elenca tutte le tabelle nella tenancy. Per visualizzare i dettagli della tabella, effettuare una delle operazioni riportate di seguito.
    • Fare clic sul nome della tabella oppure
    • Fare clic sul menu delle azioni corrispondente al nome della tabella e selezionare Visualizza dettagli.
    Viene visualizzata la pagina Dettagli tabella.
  3. Fare clic su Inserisci riga.
  4. Nella finestra Inserisci record, selezionare Input JSON avanzato per Modalità di inserimento.
  5. Incollare o caricare la definizione record in formato JSON.
  6. Fare clic su Inserisci riga.
    Il record viene inserito nella tabella.
Per visualizzare la Guida per la pagina corrente, fare clic sul collegamento della Guida nella parte superiore della pagina.

Utilizzo del comando SQL per inserire i dati

L'istruzione INSERT viene utilizzata per creare una nuova riga e aggiungerla a una tabella specificata.

È possibile specificare una o più colonne facoltative dopo il nome della tabella. Questa lista contiene i nomi delle colonne per un subset delle colonne della tabella. Il subset deve includere tutte le colonne chiave primaria. Se non è presente alcun elenco di colonne, l'elenco di colonne predefinito è quello contenente tutte le colonne della tabella, nell'ordine specificato nell'istruzione CREATE TABLE.

Le colonne nell'elenco delle colonne corrispondono uno a uno alle espressioni (o parole chiave DEFAULT) elencate dopo la clausola VALUES (viene generato un errore se il numero di espressioni/DEFAULT non è uguale al numero di colonne). Queste espressioni/DEFAULT calcolano il valore della colonna associata nella nuova riga. Viene generato un errore se un'espressione restituisce più elementi. Se un'espressione non restituisce alcun risultato, come risultato di tale espressione viene utilizzato NULL. Se invece di un'espressione, la parola chiave DEFAULT viene visualizzata nell'elenco VALORI, come valore della nuova riga viene utilizzato il valore predefinito della colonna associata. Il valore predefinito viene utilizzato anche per le colonne mancanti quando il numero di colonne nell'elenco delle colonne è inferiore al numero totale di colonne nella tabella.

Esempio 1: inserimento di una riga nella tabella BaggageInfo che fornisce tutti i valori di colonna:
INSERT INTO BaggageInfo VALUES(
1762392196147,
"Birgit Naquin",
"M",
"165-742-5715",
"QD1L0T",
[ {
    "id" : "7903989918469",
    "tagNum" : "17657806240229",
    "routing" : "JFK/MAD",
    "lastActionCode" : "OFFLOAD",
    "lastActionDesc" : "OFFLOAD",
    "lastSeenStation" : "MAD",
    "flightLegs" : [ {
      "flightNo" : "BM495",
      "flightDate" : "2019-03-07T07:00:00Z",
      "fltRouteSrc" : "JFK",
      "fltRouteDest" : "MAD",
      "estimatedArrival" : "2019-03-07T14:00:00Z",
      "actions" : [ {
        "actionAt" : "MAD",
        "actionCode" : "Offload to Carousel at MAD",
        "actionTime" : "2019-03-07T13:54:00Z"
      }, {
        "actionAt" : "JFK",
        "actionCode" : "ONLOAD to MAD",
        "actionTime" : "2019-03-07T07:00:00Z"
      }, {
        "actionAt" : "JFK",
        "actionCode" : "BagTag Scan at JFK",
        "actionTime" : "2019-03-07T06:53:00Z"
      }, {
        "actionAt" : "JFK",
        "actionCode" : "Checkin at JFK",
        "actionTime" : "2019-03-07T05:03:00Z"
      } ]
    } ],
    "lastSeenTimeGmt" : "2019-03-07T13:51:00Z",
    "bagArrivalDate" : "2019-03-07T13:51:00Z"
  } ]
)

Esempio 2: alcuni dati vengono saltati durante l'esecuzione di un'istruzione INSERT specificando la clausola DEFAULT.

È possibile saltare i dati di alcune colonne specificando "DEFAULT".
INSERT INTO BaggageInfo VALUES(
1762397286805,
"Bonnie Williams",
DEFAULT,
DEFAULT,
"CZ1O5I",
[ {
    "id" : "79039899129693",
    "tagNum" : "17657806216554",
    "routing" : "SFO/ORD/FRA",
    "lastActionCode" : "OFFLOAD",
    "lastActionDesc" : "OFFLOAD",
    "lastSeenStation" : "FRA",
    "flightLegs" : [ {
      "flightNo" : "BM572",
      "flightDate" : "2019-03-02T05:00:00Z",
      "fltRouteSrc" : "SFO",
      "fltRouteDest" : "ORD",
      "estimatedArrival" : "2019-03-02T09:00:00Z",
      "actions" : [ {
        "actionAt" : "SFO",
        "actionCode" : "ONLOAD to ORD",
        "actionTime" : "2019-03-02T05:24:00Z"
      }, {
        "actionAt" : "SFO",
        "actionCode" : "BagTag Scan at SFO",
        "actionTime" : "2019-03-02T04:52:00Z"
      }, {
        "actionAt" : "SFO",
        "actionCode" : "Checkin at SFO",
        "actionTime" : "2019-03-02T03:28:00Z"
      } ]
    }, {
      "flightNo" : "BM582",
      "flightDate" : "2019-03-02T05:24:00Z",
      "fltRouteSrc" : "ORD",
      "fltRouteDest" : "FRA",
      "estimatedArrival" : "2019-03-02T13:24:00Z",
      "actions" : [ {
        "actionAt" : "FRA",
        "actionCode" : "Offload to Carousel at FRA",
        "actionTime" : "2019-03-02T13:20:00Z"
      }, {
        "actionAt" : "ORD",
        "actionCode" : "ONLOAD to FRA",
        "actionTime" : "2019-03-02T12:54:00Z"
      }, {
        "actionAt" : "ORD",
        "actionCode" : "OFFLOAD from ORD",
        "actionTime" : "2019-03-02T12:30:00Z"
      } ]
    } ],
    "lastSeenTimeGmt" : "2019-03-02T13:18:00Z",
    "bagArrivalDate" : "2019-03-02T13:18:00Z"
  } ]
)

Esempio 3: specifica dei nomi delle colonne e ignora le colonne nell'istruzione insert.

Se si dispone di dati solo per alcune colonne di una tabella, è possibile specificare il nome delle colonne nella clausola INSERT e quindi i valori corrispondenti nella clausola "VALUES".
INSERT INTO BaggageInfo(ticketNo, fullName,confNo,bagInfo) VALUES(
1762355349471,
"Bryant Weber",
"LI7N1W",
[ {
    "id" : "79039899149056",
    "tagNum" : "17657806234185",
    "routing" : "MEL/LAX/MIA",
    "lastActionCode" : "OFFLOAD",
    "lastActionDesc" : "OFFLOAD",
    "lastSeenStation" : "MIA",
    "flightLegs" : [ {
      "flightNo" : "BM114",
      "flightDate" : "2019-03-01T12:00:00Z",
      "fltRouteSrc" : "MEL",
      "fltRouteDest" : "LAX",
      "estimatedArrival" : "2019-03-02T02:00:00Z",
      "actions" : [ {
        "actionAt" : "MEL",
        "actionCode" : "ONLOAD to LAX",
        "actionTime" : "2019-03-01T12:20:00Z"
      }, {
        "actionAt" : "MEL",
        "actionCode" : "BagTag Scan at MEL",
        "actionTime" : "2019-03-01T11:52:00Z"
      }, {
        "actionAt" : "MEL",
        "actionCode" : "Checkin at MEL",
        "actionTime" : "2019-03-01T11:43:00Z"
      } ]
    }, {
      "flightNo" : "BM866",
      "flightDate" : "2019-03-01T12:20:00Z",
      "fltRouteSrc" : "LAX",
      "fltRouteDest" : "MIA",
      "estimatedArrival" : "2019-03-02T16:21:00Z",
      "actions" : [ {
        "actionAt" : "MIA",
        "actionCode" : "Offload to Carousel at MIA",
        "actionTime" : "2019-03-02T16:18:00Z"
      }, {
        "actionAt" : "LAX",
        "actionCode" : "ONLOAD to MIA",
        "actionTime" : "2019-03-02T16:12:00Z"
      }, {
        "actionAt" : "LAX",
        "actionCode" : "OFFLOAD from LAX",
        "actionTime" : "2019-03-02T16:02:00Z"
      } ]
    } ],
    "lastSeenTimeGmt" : "2019-03-02T16:09:00Z",
    "bagArrivalDate" : "2019-03-02T16:09:00Z"
  } ]
)
Esempio 4: inserimento di una riga nella tabella stream_acct che fornisce tutti i valori di colonna:
INSERT INTO stream_acct VALUES(
1,
"AP",
"2023-10-18",
{
   "firstName": "Adam",
   "lastName": "Phillips",
   "country": "Germany",
   "contentStreamed": [{
      "showName": "At the Ranch",
      "showId": 26,
      "showtype": "tvseries",
      "genres": ["action", "crime", "spanish"],
      "numSeasons": 4,
      "seriesInfo": [{
         "seasonNum": 1,
         "numEpisodes": 2,
         "episodes": [{
            "episodeID": 20,
            "episodeName": "Season 1 episode 1",
            "lengthMin": 85,
            "minWatched": 85,
            "date": "2022-04-18"
         },
         {
            "episodeID": 30,
            "lengthMin": 60,
            "episodeName": "Season 1 episode 2",
            "minWatched": 60,
            "date": "2022 - 04 - 18 "
         }]
      },
      {
         "seasonNum": 2,
         "numEpisodes": 2,
         "episodes": [{
            "episodeID": 40,
            "episodeName": "Season 2 episode 1",
            "lengthMin": 50,
            "minWatched": 50,
            "date": "2022-04-25"
         },
         {
            "episodeID": 50,
            "episodeName": "Season 2 episode 2",
            "lengthMin": 45,
            "minWatched": 30,
            "date": "2022-04-27"
         }]
      },
      {
         "seasonNum": 3,
         "numEpisodes": 2,
         "episodes": [{
            "episodeID": 60,
            "episodeName": "Season 3 episode 1",
            "lengthMin": 50,
            "minWatched": 50,
            "date": "2022-04-25"
         },
         {
            "episodeID": 70,
            "episodeName": "Season 3 episode 2",
            "lengthMin": 45,
            "minWatched": 30,
            "date": "2022 - 04 - 27 "
         }]
      }]
   },
   {
      "showName": "Bienvenu",
      "showId": 15,
      "showtype": "tvseries",
      "genres": ["comedy", "french"],
      "numSeasons": 2,
      "seriesInfo": [{
         "seasonNum": 1,
         "numEpisodes": 2,
         "episodes": [{
            "episodeID": 20,
            "episodeName": "Bonjour",
            "lengthMin": 45,
            "minWatched": 45,
            "date": "2022-03-07"
         },
         {
            "episodeID": 30,
            "episodeName": "Merci",
            "lengthMin": 42,
            "minWatched": 42,
            "date": "2022-03-08"
         }]
      }]
   }]
});

Caricamento delle righe della tabella

Il pulsante Carica dati nella pagina Dettagli tabella consente il caricamento di massa dei dati da un file locale nella tabella tramite il browser.

La funzione Carica consente di caricare meno di poche migliaia di righe. Questa funzione è ideale per eseguire un proof of concept (POC) o per eseguire test di base del servizio. È un modo conveniente per popolare un piccolo tavolo. Se desideri scrivere decine di migliaia di righe, per motivi legati alle prestazioni è preferibile utilizzare Oracle NoSQL Database Migrator o scrivere il proprio programma utilizzando uno degli SDK NoSQL. Se, tuttavia, si desidera inserire rapidamente alcune centinaia o poche migliaia di righe, questo metodo di caricamento è un approccio rapido.

Il file da caricare deve contenere una serie di oggetti JSON. Gli oggetti possono essere espressi come elementi separati da virgole di un singolo array o come sequenza di oggetti semplici delimitati da parentesi graffe, senza delimitatori sintattici tra loro. Il contenuto di ogni oggetto deve essere in formato JSON corretto e deve essere conforme allo schema della tabella in cui verrà caricato.

Esempio: viene creata una tabella utilizzando la seguente istruzione DDL.
CREATE TABLE Simple ( id integer, val string, PRIMARY KEY ( id ) )
L'esempio seguente illustra l'uso del formato array per il contenuto del file.

[
  {
    "id": 0,
    "val": "0"
  },
  {
    "id": 1,
    "val": "2"
  }, ...
]
L'esempio seguente illustra l'uso di oggetti semplici per il contenuto del file.

{
  "id": 0,
  "val": "0"
}
{
  "id": 1,
  "val": "2"
}, ...
  • Se lo schema della tabella non richiede un valore di colonna, è possibile che la proprietà JSON corrispondente non sia disponibile.
  • Se il valore di una colonna è GENERATED ALWAYS, è necessario mantenere la proprietà JSON corrispondente.
  • Se un oggetto JSON contiene proprietà con nomi che non corrispondono ad alcun nome di colonna, tali proprietà vengono ignorate.

Per utilizzare la funzione di caricamento, fare clic sul pulsante Carica dati e selezionare il file da caricare. Il caricamento inizia immediatamente e l'avanzamento verrà visualizzato nella pagina. Al completamento dell'operazione, verrà visualizzato il numero totale di righe inserite. È possibile interrompere il caricamento facendo clic sul pulsante Interrompi caricamento. Verrà visualizzato il numero di righe di cui è stato eseguito correttamente il commit nel database.

Se viene rilevato un errore nel file di input, il caricamento verrà interrotto e verrà visualizzato un messaggio di errore con un numero di riga approssimativo. Gli errori di input potrebbero essere causati dalla sintassi JSON errata o dalla non conformità dello schema. Gli errori possono verificarsi anche durante le richieste per il servizio. Questi errori impediscono inoltre il caricamento e la visualizzazione di un messaggio.

Si consideri una tabella di esempio con il seguente schema:
CREATE TABLE IF NOT EXISTS NDCStable (id INTEGER, name STRING, email STRING, age INTEGER, income DOUBLE, PRIMARY KEY(SHARD(id)))
Nella tabella seguente sono elencati alcuni errori comuni nel file di input e la gestione degli errori corrispondente durante il caricamento dei dati.

Tabella - Gestione degli errori durante il caricamento

Problemi nel file di input Gestione errori
Testo non JSON in una delle righe
{"id":1,"name":"Jane Smith","email":"iamjane@somemail.co.us","age":30,"income":30000.0}
missed a line
{"id":2,"name":"Adam Smith","email":"adam.smith@mymail.com","age":25,"income":25000.0}

Il sistema ignora il testo e continua il caricamento. Viene visualizzato un messaggio di operazione riuscita dopo che tutte le righe sono state caricate correttamente nella tabella.

In questo esempio il testo "riga mancante" viene saltato e le due righe con ID 1 e 2 vengono caricate correttamente.

Voci di chiave primaria duplicate
{"id":2,"name":"Adam Smith","email":"adam.smith@mymail.com","age":25,"income":25000.0}
{"id":2,"name":"Jennifer Smith","email":"jenny1_smith@mymail.com","age":35,"income":35000.0}
{"id":5,"name":"Noelle Smith","email":"noel21@somemail.co.us","age":40,"income":40000.0}

Il sistema salta la voce di riga duplicata e continua il caricamento. Dopo il caricamento di tutte le righe, viene visualizzato un messaggio di operazione riuscita.

In questo esempio, la prima riga con ID 2 viene caricata nella tabella. La seconda riga contenente il valore ID duplicato 2 viene saltata. Caricamento di tutte le altre righe riuscito.

Formato JSON errato
{"id":7,"name":"Tom Smith","email":"reachtom12@mymail.com","age":65,"income":65000.0}
{"id":8,"name":"Jack Smith","email":"iamjacksmi@somemail.co.us","age":60,"income":30000.0
{"id":9,"fame":"Jane Smith""email":"iamjanesmi@somemail.co.us","age":56,"income":35000.0}

Il sistema interrompe il caricamento quando rileva la riga errata. Viene visualizzato un messaggio di errore che indica la fine imprevista del file e il relativo numero di riga approssimativo.

In questo esempio sono presenti due errori di formato JSON. Nella riga con ID 8 manca una parentesi graffa di chiusura e ID 9 manca una virgola tra due campi JSON. Entrambe queste voci non sono conformi al formato Tipo di dati JSON, con conseguente errore di caricamento. Caricamento nella tabella solo della riga con ID 7 riuscito.

Nota

L'operazione di caricamento viene interrotta al rilevamento della prima istanza di errore o incoerenza nel file di input.
Chiave primaria mancante in una riga
{"id":2,"name":"Adam Smith","email":"adam.smith@mymail.com","age":25,"income":25000.0}
{"name":"Jennifer Smith","email":"jenny1_smith@mymail.com","age":35,"income":35000.0}
{"id":5,"name":"Noelle Smith","email":"noel21@somemail.co.us","age":40,"income":40000.0}

Il sistema interrompe il caricamento quando rileva la riga errata. Viene visualizzato un messaggio di errore che indica che la chiave primaria deve avere un valore.

In questo esempio, la seconda riga non include il campo della chiave primaria con conseguente errore. Caricamento nella tabella solo della riga con ID 2 riuscito.

Non conformità schema: campi mancanti, errati o aggiuntivi
{"id":6,"name":"Yera Smith","email":"ys1982@mymail.com","age":55,"income":55000.0}
{"id":7,"fname":"Tom Smith","email":"reachtom12@mymail.com","age":65,"income":65000.0}
{"id":8,"email":"iamjacksmi@somemail.co.us","age":60,"income":30000.0}

Se nel file di input mancano campi diversi dalla chiave primaria, i dati vengono caricati correttamente. Verrà visualizzato un messaggio di conferma. I campi mancanti vengono popolati con un valore nullo.

In questo esempio il nome del campo è scritto in modo errato nella riga con ID 7 e il campo name è mancante nella riga con ID 8. In entrambi i casi, tutte le righe vengono caricate correttamente nella tabella. I campi name vengono aggiornati con un valore null.

Se il caricamento viene interrotto nel mezzo per qualsiasi motivo, è possibile effettuare una delle operazioni riportate di seguito.
  • Se non ci sono colonne con valori di chiave generati (ovvero, se le chiavi sono interamente dettate dal file JSON), puoi semplicemente ricominciare con lo stesso file. Le righe già scritte verranno scritte di nuovo.
  • Se sono presenti valori chiave generati, ricominciare scriverebbe nuovi record invece di sovrascrivere i record esistenti. Il percorso più semplice sarebbe quello di eliminare la tabella e crearla di nuovo.
  • In alternativa, è possibile rimuovere tutti i record dalla tabella eseguendo l'istruzione DELETE FROM tablename nel form Esplora dati.

Se durante il processo di caricamento viene superato il limite di scrittura di cui è stato eseguito il provisioning, verrà visualizzato un messaggio transitorio che lo indica e il caricamento verrà rallentato per evitare di superare di nuovo il limite.