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

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

La console NoSQL vous permet d'insérer des 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 de nouvelles lignes de manière déclarative.

  2. Mode d'entrée JSON avancée : vous pouvez utiliser ce mode pour fournir les valeurs de nouvelles lignes au format JSON.

  3. Vous pouvez utiliser l'instruction INSERT pour ajouter une ligne. Sous NoSQL"Tables, choisissez la table dans laquelle vous voulez 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 vers 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égionales.

Insertion de données dans des tables : mode d'entrée simple

Découvrez comment insérer des données dans des tables Oracle NoSQL Database Cloud Service en utilisant le mode d'insertion d'entrée simple.

Pour insérer des données dans des tables, procédez comme suit :

  1. Accédez à la console NoSQL à partir de la console Infrastructure. Reportez-vous à Accès au service à partir de la console Infrastructure.

  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.

    • Cliquer sur le menu d'action correspondant au nom de la table et sélectionner 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 une ligne, sélectionnez Entrée simple pour Mode d'entrée.

  5. Toutes les colonnes de la table sont répertoriées. Saisissez les données pour les colonnes de la table. Pour certains types de colonne, comme Binaire, vous téléchargez les données.

    Remarque : la saisie d'une valeur est obligatoire pour toutes les colonnes qui ne peuvent 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.

Insertion de données dans des tables : mode d'entrée JSON avancée

Découvrez comment insérer des données dans des tables Oracle NoSQL Database Cloud Service en utilisant le mode d'entrée JSON avancé.

Pour insérer des données dans des tables, procédez comme suit :

  1. Accédez à la console NoSQL à partir de la console Infrastructure. Reportez-vous à Accès au service à partir de la console Infrastructure.

  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.

    • Cliquer sur le menu d'action correspondant au nom de la table et sélectionner 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.

Utilisation de la commande SQL pour insérer des données

L'instruction INSERT permet de construire une nouvelle ligne et de l'ajouter à une table spécifié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 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 indiquées dans l'instruction CREATE TABLE.

Les colonnes de la liste de 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/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 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 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 : certaines données sont ignorées lors de l'exécution d'une instruction INSERT en indiquant 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 : Spécification des noms de colonne et saut des colonnes dans l'instruction Insert.

Si vous ne disposez que de données 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 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"
         }]
      }]
   }]
});

Téléchargement de lignes de table

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

La fonctionnalité Télécharger vers le serveur est destinée au chargement de moins de quelques milliers de lignes. Cette fonctionnalité est idéale pour effectuer une preuve de concept (POC) ou effectuer des tests de base du service. C'est un moyen pratique de remplir une petite table. Si vous souhaitez écrire des dizaines de milliers de lignes, il est préférable d'utiliser Oracle NoSQL Database Migrator pour des raisons de performances 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 télé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ée par des accolades, sans séparateur syntaxique entre eux. Le contenu de chaque objet doit être correctement formaté JSON et doit être 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"
}, ...

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 téléchargement en cliquant sur le bouton Arrêter le téléchargement. Le nombre de lignes qui ont été validées dans la base de données s'affiche.

Si une erreur est détectée dans le fichier d'entré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 causées par une non-conformité de schéma ou une syntaxe JSON incorrecte. Des erreurs peuvent également se produire lors des demandes du 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 téléchargement des données.

Traitement des erreurs lors du chargement

Cas 1 : Texte non JSON dans l'une des lignes

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

Une ligne 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}

Gestion des erreurs :

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 avec succès 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.

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

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

Le fichier d'entrée contient plusieurs lignes 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}

Gestion des erreurs :

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é chargées avec succès.

Cas 3 : Format JSON incorrect

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

Le fichier d'entrée contient des lignes avec un format JSON incorrect. Par exemple, une ligne peut ne pas comporter d'accolade fermante ou de virgule 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}

Gestion des erreurs :

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. Il manque une accolade fermante à la ligne avec l'ID 8 et une virgule entre deux champs JSON à 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.

Remarque : l'opération de téléchargement est arrêtée lorsque la première instance d'erreur ou d'incohérence est détectée dans le fichier d'entrée.

Cas 4 : clé primaire manquante dans une ligne

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

Une ligne du 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}

Gestion des erreurs :

Le système arrête le chargement lorsqu'il détecte la ligne erronée. 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 qui génère une erreur. Seule la ligne 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 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}

Gestion 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 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 les 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 télé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 au cours du processus de téléchargement, un message transitoire l'indiquant s'affiche et le téléchargement est ralenti pour éviter de dépasser à nouveau la limite.