コンソールを使用した表データの挿入
NoSQLコンソールからOracle NoSQL Database Cloud Service表へのデータの挿入方法について学習します。
- シンプル入力モード:このモードを使用して、新しい行の値を宣言的に指定できます。
- 拡張JSON入力モード:このモードを使用して、新しい行の値をJSONフォーマットで指定できます。
- INSERT文を使用して行を追加できます。NoSQL>>Tablesで、行を追加する表を選択します。「データの参照」で、SQL文に指定されたテキスト・ボックスにINSERT文を追加し、コマンドを実行します。
- ブラウザを介して、ローカル・ファイルから表にデータを一括アップロードすることもできます。
ノート: 表がグローバル・アクティブ表の場合、1つのリージョンにデータを追加すると、そのデータがすべてのリージョナル表レプリカに追加されます。
「Inserting Data Into Tables」: 「Simple Input Mode」
シンプル入力挿入モードを使用して、Oracle NoSQL Database Cloud Service表にデータを挿入する方法について学習します。
表へのデータの挿入: 拡張JSON入力モード
拡張JSON入力モードを使用して、Oracle NoSQL Database Cloud Service表へのデータの挿入方法について学習します。
SQLコマンドを使用したデータの挿入
INSERT文は、新しい行を作成して指定した表に追加するために使用します。
表名の後にオプションの列を指定できます。このリストには、表の列のサブセットの列名が含まれます。このサブセットには、すべての主キー列が含まれている必要があります。カラムリストが存在しない場合、デフォルトのカラムリストは、テーブルのすべてのカラムがCREATE TABLEステートメントで指定された順序で含まれるカラムリストです。
カラムリストのカラムは、VALUES句のあとにリストされた式(またはDEFAULTキーワード)に1対1で対応します(式/DEFAULTの数がカラム数と一致しない場合はエラーが発生します)。これらの式/DEFAULTによって、新しい行の関連する列の値が計算されます。式が複数の項目を返す場合は、エラーが発生します。式で結果が返されない場合は、NULLがその式の結果として使用されます。式ではなくDEFAULTキーワードがVALUESリストに表示される場合は、関連付けられたカラムのデフォルト値が、新しい行のそのカラムの値として使用されます。デフォルト値は、カラムリストのカラムの数がテーブルのカラムの合計数未満の場合、欠落しているカラムにも使用されます。
BaggageInfo
表へのすべての列値を提供する行の挿入: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"
} ]
)
例2: DEFAULT句を指定して、INSERT文の実行時に一部のデータをスキップします。
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"
} ]
)
例3: INSERT文で列名を指定し、列をスキップします。
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
表に挿入します。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"
}]
}]
}]
});
表の行のアップロード
表の詳細ページの「データのアップロード」ボタンを使用すると、ブラウザを介してローカル・ファイルから表にデータを一括アップロードできます。
アップロード機能は、数千行未満のロードを対象としています。この機能は、概念実証(POC)の実行や、サービスの基本的なテストの実行に最適です。小さいテーブルにデータをロードする便利な方法です。数万行を記述する場合は、パフォーマンス上の理由から、Oracle NoSQL Database Migratorを使用するか、NoSQL SDKのいずれかを使用して独自のプログラムを記述することをお薦めします。ただし、数百行または数千行をすばやく挿入する場合、このアップロード方法は便利な方法です。
アップロードするファイルには、一連のJSONオブジェクトが含まれている必要があります。オブジェクトは、単一の配列のカンマ区切り項目として、または中カッコで囲まれた単純なオブジェクトのシーケンスとして表現でき、それらの間に構文区切り文字はありません。各オブジェクトの内容は、正しくフォーマットされたJSONである必要があり、アップロード先の表のスキーマに準拠している必要があります。
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"
}, ...
- 表のスキーマで列値が不要な場合は、対応するJSONプロパティが省略されることがあります。
- 列値がGENERATED ALWAYSの場合、対応するJSONプロパティは省略する必要があります。
- JSONオブジェクトに列名と一致しない名前のプロパティが含まれている場合、それらのプロパティは無視されます。
アップロード機能を使用するには、「データをアップロード」ボタンをクリックして、アップロードするファイルを選択します。アップロードはすぐに開始され、進行状況がページに表示されます。正常に完了すると、挿入された行の合計数が表示されます。「アップロードの停止」ボタンをクリックして、アップロードを中断できます。データベースに正常にコミットされた行数が表示されます。
入力ファイルのエラーが検出されると、アップロードは停止し、近似行番号のエラー・メッセージが表示されます。入力エラーは、不適切なJSON構文またはスキーマ不適合が原因である可能性があります。サービスのリクエスト中にもエラーが発生することがあります。このようなエラーによってアップロードが停止され、メッセージが表示されます。
CREATE TABLE IF NOT EXISTS NDCStable (id INTEGER, name STRING, email STRING, age INTEGER, income DOUBLE, PRIMARY KEY(SHARD(id)))
表- アップロード中のエラー処理
入力ファイルの問題 | エラー処理 |
---|---|
いずれかの行の非JSONテキスト
|
テキストは無視され、アップロードが続行されます。すべての行が表に正常にロードされた後に、成功メッセージが表示されます。 この例では、「missed a line」というテキストがスキップされ、ID 1と2の2つの行が正常にロードされます。 |
主キー・エントリの複製
|
重複した行エントリはスキップされ、アップロードが続行されます。すべての行を正常にロードすると、成功メッセージが表示されます。 この例では、ID 2の最初の行が表にロードされます。重複したID値2を含む2番目の行はスキップされます。他のすべての行が正常にアップロードされました。 |
不正なJSON形式
|
間違った行が検出されると、アップロードは停止します。予期しないファイルの終わりとその近似行番号を示すエラーメッセージが表示されます。 この例では、2つのJSON形式のエラーがあります。ID 8の行に閉じカッコがなく、ID 9に2つのJSONフィールド間のカンマがありません。これらのエントリはどちらもJSONデータ型形式に準拠していないため、アップロードに失敗しました。ID 7の行のみが正常に表にロードされます。 ノート: 入力ファイル内のエラーまたは不整合の最初のインスタンスを検出すると、アップロード操作は停止します。 |
行に主キーがありません
|
間違った行が検出されると、アップロードは停止します。主キーに値が必要であることを示すエラー・メッセージが表示されます。 この例では、2番目の行に主キー・フィールドが含まれていないため、エラーが発生します。ID 2の行のみが正常に表にロードされました。 |
スキーマ不適合- 欠落、不正確または追加フィールド
|
入力ファイルに主キー以外のフィールドがない場合、データは正常にアップロードされます。成功メッセージが表示されます。欠落しているフィールドには、null値が移入されます。 この例では、ID 7の行でフィールド名のスペルが間違っており、ID 8の行でフィールド |
- 生成されたキー値を持つ列がない場合(つまり、キーが完全にJSONファイルで指定されている場合)、同じファイルからやり直すことができます。すでに書き込まれた行が再度書き込まれます。
- 生成されたキー値がある場合、上書きを開始すると、既存のレコードを上書きするのではなく、新しいレコードが書き込まれます。最も簡単なパスは、表を削除して再度作成することです。
- または、「データの検索」フォームで文
DELETE FROM tablename
を実行して、表からすべてのレコードを削除することもできます。
アップロード・プロセス中にプロビジョニングされた書込み制限を超えた場合、そのことを示す一時的なメッセージが表示され、制限を再度超えないようにアップロードが遅くなります。