Utilisation de la console pour insérer des données de table

Voyez comment insérer des données dans les tables Oracle NoSQL Database Cloud Service à partir de la console NoSQL.

La console NoSQL vous permet d'insérer de nouvelles rangées dans les tables Oracle NoSQL Database Cloud Service dans les modes suivants :
  1. Mode Entrée simple : Vous pouvez utiliser ce mode pour indiquer des valeurs pour les nouvelles rangées de manière déclarative.
  2. Mode Entrée JSON avancé : Vous pouvez utiliser ce mode pour indiquer des valeurs pour les nouvelles rangées au format JSON.
  3. Vous pouvez utiliser l'instruction INSERT pour ajouter une ligne. Sous NoSQL>>Tables, sélectionnez la table dans laquelle vous voulez ajouter une rangée. Sous Explorer les données, ajoutez l'énoncé INSERT dans la zone de texte fournie pour l'énoncé SQL et exécutez la commande.
  4. Vous pouvez également charger en masse les données d'un fichier local dans la table, via le navigateur.

Note : Si la table est une table active globale, l'ajout de données dans une région ajoute également les données à toutes les répliques de table régionale.

Ajout de données dans des tables : Mode Entrée simple

Voyez comment insérer des données dans les tables Oracle NoSQL Database Cloud Service à l'aide du mode d'insertion Entrée simple.

Pour ajouter des données dans des tables :
  1. Accédez à la console NoSQL à partir de la console Infrastructure. Voir Accès au service à partir de la console d'infrastructure.
  2. La console NoSQL liste toutes les tables de la location. Pour voir les détails d'une table, effectuez l'une des opérations suivantes :
    • Cliquez sur le nom de la table, ou
    • Cliquez sur le menu d'actions correspondant au nom de la table et sélectionnez Afficher les détails.
    La page Détails de la table s'affiche.
  3. Cliquez sur Insérer une rangée.
  4. Dans la fenêtre Insert Row (Insérer une rangée), sélectionnez Simple Input (Entrée simple) dans le champ Entry Mode (Mode d'entrée).
  5. Toutes les colonnes de la table sont listées. Entrez les données des colonnes de la table. Pour certains types de colonne, par exemple Binaire, vous devez charger les données.

    Note :

    Entrez une valeur obligatoire pour toutes les colonnes de la table qui ne peuvent pas être nulles.
  6. Cliquez sur Insérer une rangée.
    L'enregistrement est inséré dans la table.
Pour afficher l'aide sur la page courante, cliquez sur le lien d'aide en haut de la page.

Ajout de données dans des tables : Mode Entrée JSON avancée

Voyez comment insérer des données dans les tables Oracle NoSQL Database Cloud Service à l'aide du mode d'entrée JSON avancé.

Pour ajouter des données dans des tables :
  1. Accédez à la console NoSQL à partir de la console Infrastructure. Voir Accès au service à partir de la console d'infrastructure.
  2. La console NoSQL liste toutes les tables de la location. Pour voir les détails d'une table, effectuez l'une des opérations suivantes :
    • Cliquez sur le nom de la table, ou
    • Cliquez sur le menu d'actions correspondant au nom de la table et sélectionnez Afficher les détails.
    La page Détails de la table s'affiche.
  3. Cliquez sur Insérer une rangée.
  4. Dans la fenêtre Insert Record (Insérer un enregistrement), sélectionnez Advanced JSON Input (Entrée JSON avancée) dans le champ Entry Mode (Mode d'entrée).
  5. Coller ou charger la définition de l'enregistrement au format JSON.
  6. Cliquez sur Insérer une rangée.
    L'enregistrement est inséré dans la table.
Pour afficher l'aide sur la page courante, cliquez sur le lien d'aide en haut de la page.

Utiliser la commande SQL pour insérer des données

L'instruction INSERT permet de créer une nouvelle ligne et de l'ajouter à une table spécifique.

Des colonnes facultatives peuvent être spécifiées après le nom de la table. Cette liste contient les noms de colonne d'un sous-ensemble de colonnes de la table. Le sous-ensemble doit inclure toutes les colonnes de clé primaire. Si aucune liste de colonnes n'est présente, la liste de colonnes par défaut est celle contenant toutes les colonnes de la table, dans l'ordre, elles sont spécifiées dans l'instruction CREATE TABLE.

Les colonnes de la liste des colonnes correspondent une à une aux expressions (ou mots clés DEFAULT) listées après la clause VALUES (une erreur est générée si le nombre d'expressions/DEFAULTs n'est pas le même que le nombre de colonnes). Ces expressions/DEFAULT calculent la valeur de la colonne associée dans la nouvelle ligne. Une erreur est générée si une expression retourne plusieurs éléments. Si une expression ne retourne aucun résultat, NULL est utilisé comme résultat de cette expression. Si au lieu d'une expression, le mot clé DEFAULT apparaît dans la liste VALUES, la valeur par défaut de la colonne associée est utilisée comme valeur de cette colonne dans la nouvelle ligne. La valeur par défaut est également utilisée pour toutes les colonnes manquantes lorsque le nombre de colonnes dans la liste de colonnes est inférieur au nombre total de colonnes dans la table.

Exemple 1 : Insertion d'une rangée dans la table BaggageInfo fournissant toutes les valeurs de colonne :
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"
  } ]
)

Exemple 2 : Omission de certaines données lors de l'exécution d'un énoncé INSERT en spécifiant la clause DEFAULT.

Vous pouvez ignorer les données de certaines colonnes en spécifiant "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"
  } ]
)

Exemple 3 : Spécification des noms de colonne et omission des colonnes dans l'énoncé d'insertion.

Si vous ne disposez de données que pour certaines colonnes d'une table, vous pouvez spécifier le nom des colonnes dans la clause INSERT, puis spécifier les valeurs correspondantes dans la clause "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"
  } ]
)
Exemple 4 : Insertion d'une rangée dans la table stream_acct fournissant toutes les valeurs de colonne :
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"
         }]
      }]
   }]
});

Chargement des rangées de table

Le bouton Charger les données de la page Détails de la table permet le chargement en masse de données à partir d'un fichier local dans la table, au moyen du navigateur.

La fonction Charger est conçue pour charger moins de quelques milliers de rangées. Cette fonctionnalité est idéale pour effectuer une validation de principe (POC) ou effectuer des tests de base du service. C'est un moyen pratique d'alimenter une petite table. Si vous voulez écrire des dizaines de milliers de rangées, il est préférable d'utiliser Oracle NoSQL Database Migrator ou d'écrire votre propre programme à l'aide de l'une des trousses SDK NoSQL pour des raisons de performance. Cependant, si vous souhaitez insérer rapidement quelques centaines ou quelques milliers de lignes, cette méthode de téléchargement est une approche rapide.

Le fichier à charger doit contenir une série d'objets JSON. Les objets peuvent être exprimés sous la forme d'éléments séparés par des virgules d'un seul tableau ou sous la forme d'une séquence d'objets simples délimités par des accolades, sans délimiteurs syntaxiques entre eux. Le contenu de chaque objet doit être correctement formaté JSON et doit être conforme au schéma de la table dans laquelle ils seront chargés.

Exemple : Une table est créée à l'aide de l'énoncé LDD suivant
CREATE TABLE Simple ( id integer, val string, PRIMARY KEY ( id ) )
L'exemple suivant illustre l'utilisation du format de tableau pour le contenu du fichier.

[
  {
    "id": 0,
    "val": "0"
  },
  {
    "id": 1,
    "val": "2"
  }, ...
]
L'exemple suivant illustre l'utilisation d'objets simples pour le contenu du fichier.

{
  "id": 0,
  "val": "0"
}
{
  "id": 1,
  "val": "2"
}, ...
  • Si une valeur de colonne n'est pas requise par le schéma de la table, la propriété JSON correspondante peut être omise.
  • Si une valeur de colonne est GENERATED ALWAYS, la propriété JSON correspondante doit être omise.
  • Si un objet JSON contient des propriétés dont les noms ne correspondent à aucun nom de colonne, ces propriétés sont ignorées.

Pour utiliser la fonction de chargement, cliquez sur le bouton Charger les données et sélectionnez le fichier à charger. Le téléchargement commence immédiatement et la progression sera affichée sur la page. Une fois l'opération terminée, le nombre total de rangées insérées s'affiche. Vous pouvez interrompre le chargement en cliquant sur le bouton Arrêter le chargement. Le nombre de rangées qui ont été validées avec succès dans la base de données s'affiche.

Si une erreur est détectée dans le fichier d'entrée, le chargement s'arrête et un message d'erreur avec un numéro de ligne approximatif s'affiche. Les erreurs d'entrée peuvent être causées par une syntaxe JSON incorrecte ou une non-conformité de schéma. Des erreurs peuvent également se produire lors des demandes pour le service. De telles erreurs arrêtent également le chargement et affichent un message.

Prenons un exemple de table avec le schéma suivant :
CREATE TABLE IF NOT EXISTS NDCStable (id INTEGER, name STRING, email STRING, age INTEGER, income DOUBLE, PRIMARY KEY(SHARD(id)))
Le tableau suivant répertorie quelques erreurs courantes dans le fichier d'entrée et le traitement des erreurs correspondant lors du chargement des données.

Table - Traitement des erreurs pendant le chargement

Problèmes dans le fichier d'entrée Traitement des erreurs
Texte non JSON dans l'une des rangées
{"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}

Le système ignore le texte et poursuit le chargement. Un message de réussite s'affiche une fois que toutes les rangées ont été chargées avec succès dans la table.

Dans cet exemple, le texte "missed a line" est ignoré et les deux lignes portant les ID 1 et 2 sont chargées avec succès.

Entrées de clé primaire en double
{"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}

Le système ignore l'entrée de rangée dupliquée et poursuit le chargement. Un message de réussite s'affiche après le chargement de toutes les rangées.

Dans cet exemple, la première ligne portant l'ID 2 est chargée dans la table. La deuxième rangée contenant la valeur d'ID en double 2 est ignorée. Toutes les autres rangées ont été chargées.

Format JSON incorrect
{"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}

Le système arrête le chargement lorsqu'il détecte l'enregistrement erroné. Un message d'erreur s'affiche indiquant la fin inattendue du fichier et son numéro de ligne approximatif.

Dans cet exemple, il existe deux erreurs de format JSON. Une accolade fermante est manquante dans la rangée portant l'ID 8 et une virgule est manquante dans l'ID 9 entre deux champs JSON. Ces deux entrées ne sont pas conformes au format Type de données JSON, ce qui entraîne un échec de chargement. Seule la rangée portant l'ID 7 est chargée avec succès dans la table.

Note :

L'opération de chargement est arrêtée lors de la détection de la première instance d'erreur ou d'incohérence dans le fichier d'entrée.
Clé primaire manquante dans une rangée
{"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}

Le système arrête le chargement lorsqu'il détecte l'enregistrement erroné. Un message d'erreur s'affiche pour indiquer que la clé primaire doit avoir une valeur.

Dans cet exemple, la deuxième ligne n'inclut pas le champ de clé primaire entraînant une erreur. Seule la rangée portant l'ID 2 est chargée avec succès dans la table.

Non-conformité du schéma - champs manquants, incorrects ou supplémentaires
{"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}

Si des champs autres que la clé primaire sont manquants dans le fichier d'entrée, les données sont chargées avec succès. Un message de réussite s'affiche. Les champs manquants sont alimentés avec une valeur nulle.

Dans cet exemple, le nom du champ est mal orthographié dans la rangée portant l'ID 7 et le champ name est manquant dans la rangée portant l'ID 8. Dans les deux cas, toutes les lignes sont chargées avec succès dans la table. Les champs name sont mis à jour avec une valeur nul.

Si le téléchargement est arrêté au milieu pour une raison quelconque, vous pouvez effectuer l'une des opérations suivantes :
  • S'il n'y a aucune colonne avec des valeurs de clé générées (c'est-à-dire si les clés sont entièrement dictées par le fichier JSON), vous pouvez simplement recommencer avec le même fichier. Les lignes déjà écrites seront à nouveau écrites.
  • S'il y a des valeurs de clé générées, le redémarrage écrirait de nouveaux enregistrements au lieu de remplacer les enregistrements existants. Le chemin le plus simple serait de supprimer la table et de la créer à nouveau.
  • Vous pouvez également supprimer tous les enregistrements de la table en exécutant l'énoncé DELETE FROM tablename dans le formulaire Explorer les données.

Si la limite d'écriture provisionnée est dépassée lors du processus de chargement, un message transitoire l'indiquant sera affiché et le chargement sera ralenti pour éviter de le dépasser à nouveau.