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

Voyez comment insérer des données dans des tables du service Oracle NoSQL Database Cloud à 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 selon 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, au moyen du 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.

Insérer des 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 insérer des données dans des tables :

  1. Accédez à la console NoSQL à partir de la console d'infrastructure. Voir Accès au service à partir de la console d'infrastructure.

  2. La console NoSQL répertorie 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 Voir 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, sélectionnez Simple Input 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.

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

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

Pour insérer des données dans des tables :

  1. Accédez à la console NoSQL à partir de la console d'infrastructure. Voir Accès au service à partir de la console d'infrastructure.

  2. La console NoSQL répertorie 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 Voir 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, sélectionnez Advanced JSON Input dans le champ Entry Mode (Mode d'entrée).

  5. Collez ou chargez 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 une commande SQL pour insérer des données

L'instruction INSERT permet de construire 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 des 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 de colonnes correspondent un à un aux expressions (ou mots clés DEFAULT) énuméré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 plus d'un élément. Si une expression ne renvoie aucun résultat, la valeur NULL est utilisée 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 en 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 : Ignorer 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 en 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 des données à partir d'un fichier local dans la table, au moyen du navigateur.

La fonction Charger est destinée au chargement de moins de quelques milliers de rangées. Cette fonctionnalité est idéale pour effectuer une démonstration de faisabilité (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 serait préférable, pour des raisons de performance, d'utiliser Oracle NoSQL Database Migrator ou d'écrire votre propre programme à l'aide d'une des trousses SDK NoSQL. Si, toutefois, 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 tableau unique ou sous la forme d'une séquence d'objets simples délimités par des accolades, sans délimiteur syntaxique entre eux. Le contenu de chaque objet doit avoir un format JSON correct et être conforme au schéma de la table dans laquelle il sera chargé.

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"
}, ...

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 lignes 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 ou une non-conformité de schéma incorrecte. Des erreurs peuvent également se produire lors des demandes pour le service. De telles erreurs empêchent également le chargement et l'affichage d'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.

Traitement des erreurs lors du chargement

Cas 1 : Texte non JSON dans l'une des rangées

Problème dans le fichier d'entrée :

Une rangée contient du texte non JSON, tel que missed a line, entre deux enregistrements JSON valides.

{"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}

Traitement des erreurs :

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

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

Cas 2 : Entrées de clé primaire en double

Problème dans le fichier d'entrée :

Le fichier d'entrée contient plusieurs rangées avec la même valeur de clé primaire.

{"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}

Traitement des erreurs :

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

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 dupliquée 2 est ignorée. Toutes les autres rangées ont été chargées.

Cas 3 : Format JSON incorrect

Problème dans le fichier d'entrée :

Le fichier d'entrée contient des rangées avec un format JSON incorrect. Par exemple, une accolade fermante ou une virgule peut être manquante dans une rangée entre deux champs JSON.

{"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}

Traitement des erreurs :

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 y a deux erreurs de format JSON. Il manque une accolade fermante dans la rangée portant l'ID 8 et une virgule entre deux champs JSON est manquante dans l'ID 9. Ces deux entrées ne sont pas conformes au format Type de données JSON, ce qui entraîne l'échec du chargement. Seule la rangée portant l'ID 7 a été 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.

Cas 4 : Clé primaire manquante dans une rangée

Problème dans le fichier d'entrée :

Un enregistrement dans le fichier d'entrée n'inclut pas le champ de clé primaire.

{"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}

Traitement des erreurs :

Le système arrête le chargement lorsqu'il détecte l'enregistrement erroné. Un message d'erreur s'affiche indiquant 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 a été chargée avec succès dans la table.

Cas 5 : Non-conformité du schéma - Champs manquants, incorrects ou supplémentaires

Problème dans le fichier d'entrée :

Le fichier d'entrée contient des champs manquants, dont le nom est incorrect ou des champs supplémentaires qui ne sont pas conformes au schéma de la table.

{"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}

Traitement des erreurs :

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 null.

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

Si le chargement est arrêté au milieu pour une raison quelconque, vous pouvez effectuer l'une des opérations suivantes :

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