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.
- Mode Entrée simple : Vous pouvez utiliser ce mode pour indiquer des valeurs pour les nouvelles rangées de manière déclarative.
- Mode Entrée JSON avancé : Vous pouvez utiliser ce mode pour indiquer des valeurs pour les nouvelles rangées au format JSON.
- 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.
- 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.
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é.
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.
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.
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.
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"
} ]
)
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.
CREATE TABLE Simple ( id integer, val string, PRIMARY KEY ( id ) )
[
{
"id": 0,
"val": "0"
},
{
"id": 1,
"val": "2"
}, ...
]
{
"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.
CREATE TABLE IF NOT EXISTS NDCStable (id INTEGER, name STRING, email STRING, age INTEGER, income DOUBLE, PRIMARY KEY(SHARD(id)))
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
|
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
|
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
|
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
|
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
|
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 |
- 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.
Utilisation de la console pour insérer des données de table