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

En savoir plus sur l'insertion de données dans des tables Oracle NoSQL Database Cloud Service à partir de la console NoSQL.

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

Remarque : 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 d'entrée simple

Apprenez à insérer des données dans des tables Oracle NoSQL Database Cloud Service en utilisant le mode d'insertion simple.

Pour insérer des données dans des tables, procédez comme suit :
  1. Accédez à la console NoSQL à partir de la console d'infrastructure. Reportez-vous à la section Accessing the Service from the Infrastructure Console.
  2. La console NoSQL répertorie toutes les tables dans la location. Pour afficher les détails d'une table, effectuez l'une des opérations suivantes :
    • Cliquer sur le nom de la table.
    • Cliquez sur le menu d'action correspondant au nom de la table et sélectionnez Afficher les détails.
    La page Détails de la table s'ouvre.
  3. Cliquez sur Insérer une ligne.
  4. Dans la fenêtre Insert Row, sélectionnez Simple Input pour Entry Mode.
  5. Tous les éléments de la table sont répertoriés. Saisissez les données pour les colonnes de la table. Pour certains types de colonne, comme Binaire, vous téléchargez les données.

    Remarques :

    La saisie d'une valeur est obligatoire pour toutes les colonnes ne pouvant pas être NULL dans la table.
  6. Cliquez sur Insérer une ligne.
    L'enregistrement est inséré dans la table.
Pour afficher l'aide de la page en cours, cliquez sur le lien d'aide en haut de la page.

Insérer des données dans des tables : mode d'entrée JSON avancée

Learn how to insert data into Oracle NoSQL Database Cloud Service tables by using the Advanced JSON input mode.

Pour insérer des données dans des tables, procédez comme suit :
  1. Accédez à la console NoSQL à partir de la console d'infrastructure. Reportez-vous à la section Accessing the Service from the Infrastructure Console.
  2. La console NoSQL répertorie toutes les tables dans la location. Pour afficher les détails d'une table, effectuez l'une des opérations suivantes :
    • Cliquer sur le nom de la table.
    • Cliquez sur le menu d'action correspondant au nom de la table et sélectionnez Afficher les détails.
    La page Détails de la table s'ouvre.
  3. Cliquez sur Insérer une ligne.
  4. Dans la fenêtre Insérer un enregistrement, sélectionnez entrée JSON avancée pour Mode d'entrée.
  5. Collez ou téléchargez la définition d'enregistrement au format JSON.
  6. Cliquez sur Insérer une ligne.
    L'enregistrement est inséré dans la table.
Pour afficher l'aide de la page en cours, 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 donnée.

Des colonnes facultatives peuvent être indiqué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 qui contient 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) répertoriées après la clause VALUES (une erreur est générée si le nombre d'expressions/DEFAULT est différent du nombre de colonnes). Ces expressions/Défauts calculent la valeur de la colonne associée dans la nouvelle ligne. Une erreur est générée si une expression renvoie plusieurs éléments. Si une expression ne renvoie 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 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 ligne dans la table BaggageInfo avec 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 des données lors de l'exécution d'une instruction INSERT en spécifiant la clause DEFAULT.

Vous pouvez ignorer les données de certaines colonnes en indiquant "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 : Indiquer des noms de colonne et ignorer des colonnes dans l'instruction d'insertion.

Si vous ne disposez de données que pour certaines colonnes d'une table, vous pouvez indiquer le nom des colonnes dans la clause INSERT, puis indiquer 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 ligne dans la table stream_acct avec 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"
         }]
      }]
   }]
});

Téléchargement de lignes de table

Le bouton Télécharger les données de la page de détails de la table permet de télécharger en masse les données d'un fichier local vers la table, via le navigateur.

La fonctionnalité Charger est destinée au chargement de moins de quelques milliers de lignes. Cette fonctionnalité est idéale pour effectuer une étude de faisabilité ou effectuer des tests de base du service. C'est un moyen pratique de remplir une petite table. Si vous voulez écrire des dizaines de milliers de lignes, il est préférable, pour des raisons de performances, d'utiliser Oracle NoSQL Database Migrator ou d'écrire votre propre programme à l'aide de l'un des kits SDK NoSQL. Toutefois, si vous souhaitez insérer rapidement quelques centaines ou quelques milliers de lignes, cette méthode de chargement est une approche rapide.

Le fichier à télé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 séparateur syntaxique. Le contenu de chaque objet doit être au format JSON correct et conforme au schéma de la table vers laquelle il sera téléchargé.

Exemple : une table est créée à l'aide de l'instruction DDL suivante
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 ignorée.
  • Si une valeur de colonne est GENERATED ALWAYS, la propriété JSON correspondante doit être ignorée.
  • 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 fonctionnalité de téléchargement, cliquez sur le bouton Télécharger les données et sélectionnez le fichier à télé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 lignes insérées s'affiche. Vous pouvez interrompre le chargement en cliquant sur le bouton Arrêter le chargement. Le nombre de lignes validées avec succès dans la base de données sera affiché.

Si une erreur dans le fichier d'entrée est détectée, le télé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 dues à 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 télé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 Gestion des erreurs
Texte non JSON dans l'une des lignes
{"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 succès s'affiche une fois que toutes les lignes ont été chargées dans la table.

Dans cet exemple, le texte "missed a line" est ignoré et les deux lignes avec 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 ligne dupliquée et poursuit le chargement. Un message de succès s'affiche après le chargement de toutes les lignes.

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

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 la ligne erronée. 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 sur la ligne avec l'ID 8 et une virgule entre deux champs JSON est manquante pour l'ID 9. Ces deux entrées ne sont pas conformes au format Type de données JSON, ce qui entraîne un échec de téléchargement. Seule la ligne portant l'ID 7 a été chargée avec succès dans la table.

Remarques :

L'opération de télé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 sur une ligne
{"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 la ligne erronée. 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, ce qui entraîne une erreur. Seule la ligne portant l'ID 2 a été 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 succès apparaît. Les champs manquants sont renseignés avec une valeur NULL.

Dans cet exemple, le nom du champ est mal orthographié dans la ligne avec l'ID 7 et le champ name est manquant dans la ligne avec 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 aucune colonne ne contient de 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.
  • Si des valeurs de clé sont générées, le fait de recommencer écrirait de nouveaux enregistrements au lieu d'écraser des enregistrements existants. Le chemin le plus simple consiste à supprimer la table et à la créer à nouveau.
  • Vous pouvez également enlever tous les enregistrements de la table en exécutant l'instruction DELETE FROM tablename dans le formulaire Explorer les données.

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