3.2 「SQL」ページ
「SQL」ページでは、SQL文とPL/SQL文を入力および実行して、データベース・オブジェクトを作成できます。
「SQL」ページにナビゲートするには、次のいずれかを実行します。
-
「データベース・アクション」ページで、「SQL」をクリックします。
-
「セレクタ」をクリックして、左側のナビゲーション・ペインを表示します。「開発」メニューを展開し、「SQL」を選択します。
SQLおよびPL/SQL文をワークシートで使用して、表の作成、データの挿入、トリガーの作成と編集、表からのデータの選択、およびファイルへのデータの保存を行うことができます。その他の機能には、構文の強調表示とエラー検出があります。
「SQL」ページは、ワークシートとオブジェクトのナビゲート用の左ペイン、SQL文を実行するためのエディタ、および結果を表示するための出力ペインで構成されています。次の項ではこれらの拡張機能について説明します。
3.2.1 オブジェクトとワークシートのナビゲート
左ペインの「ナビゲータ」タブに、選択したスキーマの保存済オブジェクトが表示されます。
図3-1 次の図は、左ペインの様々な要素を示しています。
図3-1 「SQL」の左ペイン
-
スキーマ・セレクタおよびオブジェクト・タイプ・セレクタ: ドロップダウン・リストを使用してスキーマを選択し、オブジェクト・タイプで結果をフィルタリングします。
-
「ワークシート」タブ: ブラウザに保存されているワークシートが表示されます。コンテキスト(右クリック)・メニューを使用すると、既存のワークシートを開いたり削除できます。
ノート:
作成されるワークシートは、ワークシートの保存時にセッションに使用したブラウザ(Internet Explorer、Mozilla FirefoxまたはGoogle Chrome)に依存しており、他のブラウザからはアクセスできません。 -
検索: 保存済ワークシートのコンテンツを検索したり、「ナビゲータ」タブのオブジェクトを名前で検索します。検索機能では大/小文字が区別されず、一致するエントリがすべて取得され、ワイルドカード文字を使用する必要はありません。
-
コンテキスト・メニュー: コンテキスト・メニューのオプションは次のとおりです。
-
開く: オブジェクト・タイプに関連する情報を参照します。たとえば、表の場合、「列」、「依存性」、「制約」、「詳細」、「付与」、「索引」、「パーティション」、「統計」および「トリガー」が表示されます。
-
「編集」は、既存のオブジェクトのプロパティを編集します。
-
「追加」は、選択したオブジェクト・タイプに基づいてオブジェクトを作成します。
-
「テンプレートとして使用」は、既存のオブジェクトのプロパティをテンプレートとして使用してオブジェクトを作成します。
-
「データのロード」は、ローカル・ファイルから表にデータをロードします。
-
「クイックDDL」は、オブジェクトのデータ定義言語文を生成します。
-
-
リフレッシュ: 左ペインにリストされているオブジェクトまたはワークシートをリフレッシュします。
-
「オブジェクト」サブメニュー: 「オブジェクトの作成」ダイアログを開き、ドロップダウン・リストで選択したタイプに基づいて新規オブジェクトを作成します。
-
ヘルプ: コンテキスト・ヘルプ・ドキュメントを提供します。
オブジェクトを左ペインからドラッグし、右ペインのワークシート・エディタにドロップできます。
-
表またはビューをドラッグ・アンド・ドロップする場合、「挿入」、「更新」、「選択」または「削除」のいずれかのSQL文を選択するように求められます。たとえば、「選択」を選択すると、表またはビュー内のすべての列でSELECT文が作成されます。その後、列リストの変更やWHERE句の追加などによって、文を編集できます。
「オブジェクト名」を選択すると、スキーマ名の接頭辞が付いたオブジェクトの名前がワークシートに追加されます。
-
ファンクションまたはプロシージャをドラッグ・アンド・ドロップする場合、ワークシートにファンクションまたはプロシージャの名前またはPL/SQLコードを挿入するように選択できます。PL/SQLコードを選択した場合は、ワークシートにコードを挿入する前にパラメータを入力できます。
3.2.2 SQLエディタでのSQL文の実行
SQLエディタでは、実行するSQL文を入力できます。
SQL文およびPL/SQL文を使用して、表の作成、データの挿入、データの選択または表からのデータの削除などのアクションを指定できます。複数の文の場合、PL/SQL以外の各文は、セミコロンまたは(改行後の)スラッシュ(/)のいずれかで終了する必要があります。各PL/SQL文は、改行後にスラッシュ(/)で終了する必要があります。SQLキーワードは、自動的にハイライト表示されます。
ワークシートでサポートされているSQL*PlusおよびSQLcl文については、サポートされているSQL*PlusおよびSQLclコマンドを参照してください。
[Ctrl]+[Space]を押すと、挿入ポイントで補完可能な構文のリストが表示されます。これは、編集中のコードを自動補完するために使用できます。このリストは、挿入ポイントでのコードのコンテキストに基づきます。また、[Ctrl]を押しながらクリックすると、リストで複数のオプションを選択できます。
図autocomplete_wrksheet.pngの説明
コードのエラーは、赤い点または曲線で示されます。カーソルを置くと、エラーを解決するための可能な修正がポップアップで表示されます。
図error_wrksheet.pngの説明
「SQL」ツールバーには、次の操作のアイコンが含まれています。
-
「ワークシート」を使用すると、ワークシートの作成、既存のワークシートのオープンまたは削除、およびワークシートの保存を行うことができます。
ノート:
ワークシートはブラウザで保存されます。したがって、パブリック・ネットワーク内のコンピュータで重要な作業を行う場合は、ブラウザ・キャッシュをクリアしてから終了してください。また、保存されたワークシートは、ワークシートの作成時に使用されたブラウザでのみ表示されます。
-
「文の実行」は、ワークシート・エディタで選択した文またはマウス・ポインタで示した文を実行します。SQL文には、VARCHAR2型のバインド変数および置換変数を含めることができます(ただし、ほとんどの場合、VARCHAR2は、必要に応じてNUMBERに自動的に内部変換されます)。変数の値を入力するためのダイアログ・ボックスが表示されます。
-
「スクリプトの実行」は、スクリプト・ランナーを使用してワークシート・エディタ内のすべての文を実行します。SQL文には、VARCHAR2型のバインド変数(置換変数ではない)を含めることができます(ただし、ほとんどの場合、VARCHAR2は必要に応じて自動的にNUMBERに変換されます)。バインド変数値を入力するためのダイアログ・ボックスが表示されます。
-
実行計画: (EXPLAIN PLAN文を内部的に実行して)文の実行計画を生成します。実行計画は、ワークシート出力ペインの「実行計画」タブに自動的に表示されます。
-
「自動トレース」により、文が実行され、ランタイム統計と実際の実行計画が収集されます。自動トレース出力は、ワークシート出力ペインの「自動トレース」タブに表示されます。現在のところ、使用可能なプリファレンスはありません。
-
エディタ・コンテンツのダウンロードは、ワークシートのコンテンツをSQLファイルとしてローカル・システムにダウンロードします。
-
「フォーマット」では、文の名前、句、キーワードの大文字化、改行およびインデントの追加など、エディタでSQL文がフォーマットされます。
-
「クリア」は、エディタから文を削除します。
-
「ツアー」は、ワークシートのガイド付きツアーを提供します。主な機能が強調表示され、インタフェースを初めて使用する場合に便利な情報が示されます。
-
「ヘルプ」はコンテキスト関連のヘルプを提供し、ヘルプ・ドキュメントへのリンクを示します。
SQLで使用されるショートカットのリストは、キーボード・ショートカットを参照してください。
3.2.2.1 キーボード・ショートカット
この項では、「SQL」ページの様々なユーザー・アクションのキーボード・ショートカットを示します。
表3-1 ユーザー・アクションのキーボード・ショートカット
キーボード・ショートカット | アクション |
---|---|
[Ctrl]+[Enter]/[Cmd]+[Enter] |
コードを問合せとして実行します。 |
[Ctrl]+[↓]/[Cmd]+[↓] |
履歴から次のSQLコードに移動します。 |
[Ctrl]+[↑]/[Cmd]+[↑] |
履歴から前のSQLコードに移動します。 |
[Ctrl]+[D]/[Cmd]+[D] |
エディタをクリアします。 |
[Ctrl]+[S]/[Cmd]+[S] |
現在のワークシートを保存します。 |
[Ctrl]+[O]/[Cmd]+[O] |
ワークシート・ブラウザ・ダイアログを開きます。 |
[Ctrl]+[I]/[Cmd]+[I] |
エディタのコンテンツをダウンロードします。 |
F1 |
ヘルプ・トピックを開きます。 |
F5 |
コードをスクリプトとして実行します。 |
F6 |
自動トレースを表示します。 |
F10 |
実行計画を表示します。 |
[Ctrl]+[F7]/[Cmd]+[F7] |
エディタでコードをフォーマットします。 |
[Ctrl]+[Space]/[Cmd]+[Space] |
コードを自動補完します(ヒントを表示)。 |
[Windows]+[Esc]/[Cmd]+[Esc] |
エディタの外側にフォーカスし、[Tab]キーを使用してアプリケーションの残りの部分にナビゲートします。 |
3.2.3 SQL出力の表示
「SQL」の右下のペインには、SQLエディタで実行された操作の出力が表示されます。
次の図に、「SQL」ページの出力ペインを示します。
出力ペインには次のタブがあります。
-
問合せ結果: 表示表における直近の「文の実行」操作の結果を表示します。
-
スクリプト出力: スクリプト・エンジンを使用して、スクリプトとして実行された文からのテキスト出力を表示します。
-
DBMS出力: DBMS_OUTPUTパッケージ文の出力が表示されます。
-
実行計画:「実行計画」コマンドを使用して、問合せの計画を表示します。
-
自動トレース: 自動トレース機能を使用してSQL文を実行するときに、
v$sql_plan
からセッション統計および実行計画を表示します。「自動トレース」アイコンをクリックすると、出力が表示されます。 -
SQL履歴: 実行したSQL文およびスクリプトが表示されます。ワークシートで以前に実行した問合せを再度入力するには、履歴リストで問合せをダブルクリックします。「検索」アイコンをクリックすると、特定の文を検索できます。検索機能は大/小文字を区別し、検索テキストを含むすべてのエントリを取得して、ワイルドカード文字を必要としません。
- データのロード: すべての表示可能な表(他のスキーマからの表を含む)でロードされた行および失敗した行の合計のレポートを表示します。
このペインのアイコンは次のとおりです。
-
出力のクリア: 出力をクリアします。
-
情報の表示: 出力を表示するSQL文を表示します。
-
新規タブで開く: 問合せ結果または実行計画を新しいウィンドウで開きます。
-
ダウンロード: これは問合せ結果にのみ適用可能です。CSV、JSON、XMLまたはTEXT(.tsv)形式で、問合せ結果をローカル・コンピュータにダウンロードできます。
「問合せ結果」タブの表示表で、行ヘッダーのコンテキスト・メニュー(右クリック)は次で構成されます。
-
「列」を使用すると、非表示にする列を選択できます。
-
ソート: ソートの基準とする列を選択するためのダイアログ・ボックスを表示します。各列で、昇順または降順を指定したり、NULL値が最初に表示されるように指定できます。
残りの表示表のコンテキスト・メニューは、次のコマンドで構成されます。
-
「行数のカウント」には、問合せの結果セット内の行数が表示されます。
-
単一レコード・ビューでは、表またはビューのデータを一度に1つずつ表示できます。
-
エクスポートでは、選択した形式に基づいてダウンロード用のファイルが生成されます。これは、XML、CSV (列識別子のヘッダー行を含むカンマ区切り値)、挿入、デリミタ付き、固定、HTML、JSONまたはTEXTのいずれかになります。
-
書式: ドロップダウン・リストからエクスポートする書式を選択します。
-
行の終了文字: 各行の終了文字を指定します。終了文字は、エクスポートされるデータ内には含まれていません。プレビュー・ページでデータが1行に表示される場合、正しい終了文字が指定されていません。
-
ヘッダー: 最初の行がヘッダー行であるか、データの先頭行であるかを制御します。
-
左囲みおよび右囲み: 囲みは文字データに対して、必要に応じて使用されます。囲みは、エクスポートされるデータ内には含まれません。
ノート:
ポップアップ・ブロッカが有効な場合、ファイルはダウンロードできません。 -
-
「コピー」は、セル、行または行の範囲からデータをコピーします。
3.2.4 データのロード
「SQL」ページでは、ローカル・ファイルから既存の表または新しい表にデータをロードできます。
ロードできるファイル形式は、CSV、XLS、XLSX、TSV、TXT、XML、JSONおよびAVROです。XML、JSONおよびAVROファイルについては、JSON、AVROおよびXMLファイルの形式の仕様を参照してください。
3.2.4.2 ローカル・ファイルから新しい表へのデータのロード
ローカル・ファイルから新しい表にデータをロードするには、次のステップを実行します。
-
次のいずれかの方法で開始できます。
-
「ナビゲータ」タブの左ペインで、オブジェクト・サブメニューをクリックし、「データのロード」を選択してから、「新規表へのデータのアップロード」を選択します。
-
「ナビゲータ」タブで、ローカル・ファイルを左側のペインにドラッグ・アンド・ドロップします。ペインにファイルをドラッグすると、ここにファイルをドロップして開始しますというメッセージが表示されます。
-
ワークシートの出力ペインで、「データのロード」タブを選択し、ローカル・ファイルを出力ペインにドラッグ・アンド・ドロップします。
新しい表へのデータのアップロードが表示されます。データのプレビューが、グリッド形式で表示されます。
-
-
「オプションの表示/非表示」をクリックして、データ・プレビューで変更できるオプションを表示します。
-
列名: 「ファイルから取得」を選択すると、1行目に列ヘッダーが表示されます。
-
テキスト囲みおよびフィールド・デリミタ: これらのオプションは、選択したファイルがプレーン・テキスト形式(CSV、TSVまたはTXT)である場合にのみ表示されます。テキスト囲みとフィールド・デリミタ用にソース・ファイルで使用されている文字を選択または入力します。
-
スキップする行: スキップする行数を入力するか、上矢印と下矢印を使用して選択します。
-
プレビュー・サイズ: プレビューする行数を入力するか、上矢印と下矢印を使用して選択します。
-
アップロードする行を制限: このオプションを選択する場合は、ロードする行数を指定する必要があります。上矢印および下矢印を使用して、ロードする行数を選択します。
選択したオプションとデータ・プレビューを削除するには、「クリア」をクリックします。
必要なオプションを選択してから、「適用」をクリックして「次」をクリックします。
-
-
「表の定義」で、次の設定を行います。
-
「表名」フィールドに、ターゲット表の名前を入力します。
-
ターゲット表に追加する列の行の先頭のチェック・ボックスを選択します。
-
「列名」、「列の型」、「精度」、「スケール」、「デフォルト」、「主キー」、「Null値可能」などの列属性の値を選択または入力します。
-
日付、タイムスタンプ、数値型のデータの場合は、「書式マスク」列が表示されます。日付型およびタイムスタンプ型の場合、ドロップダウン・リストから値を選択するか、「書式マスク」フィールドに値を入力する必要があります。数値型の場合、書式マスクはオプションです。
日付列およびタイムスタンプ列の場合、アップロードするデータを表示する互換性のある書式マスクを指定する必要があります。たとえば、日付データが
12-FEB-2021 12.21.30
などの場合は、日付マスクにDD-MON-YYYY HH.MI.SS
を指定する必要があります。書式マスクは、ファイル内のデータに基づいて自動的に決定されます。提案された書式マスクを確認し、必要に応じて、ターゲット・セルに直接書式を入力して変更する必要があります。
「次」をクリックします。
-
-
前の画面で行った選択に基づいて生成されたDDLコードを確認します。ソース列からターゲット列へのマッピングも表示されます。
「終了」をクリックします。データが正常にロードされると、新しい表が「ナビゲータ」タブに表示されます。
- ロードされた行および失敗した行の合計に関する詳細なレポートを表示するには、次のいずれかを実行します。
-
「ナビゲータ」タブで表を右クリックし、「データのロード」、「履歴」の順に選択します。特定の表のレポートが表示されます。
-
「ナビゲータ」タブで、「オブジェクト」サブメニュー、「データのロード」、「履歴」の順に選択します。「ナビゲータ」タブで選択されているスキーマ内のすべての表のレポートが表示されます。
-
ワークシートの出力ペインで、「データのロード」タブを選択します。これにより、表示可能なすべての表(他のスキーマの表を含む)のレポートが表示されます。
ロードされたデータのサマリーが、「履歴」ダイアログに表示されます。データのロードに失敗した場合、「失敗した行」列に失敗した行の数を表示できます。「失敗した行」列をクリックして、失敗した行を示すダイアログを開きます。
「履歴」ダイアログで、ロードされたファイルをスキーマ名、表名またはファイル名で検索することもできます。ロードしたファイルを削除するには、「すべての履歴を削除」をクリックします。
-
3.2.4.3 JSON、AVROおよびXMLファイルの形式の仕様
データを表に正常にロードするには、JSON、AVROおよびXMLファイルに対して特定の形式でデータを格納する必要があります。
形式の仕様については、次の各項で説明します。
3.2.4.3.1 JSONファイルとAVROファイル
JSONファイルおよびAVROファイルの場合、プリミティブ型から表の列への変換は、最上位データでのみサポートされます。ネストしたオブジェクトは、VARCHAR2 (JSON)またはCLOB (JSON)などのJSON文字列として保存されます。
ノート:
JSONチェック制約は、Oracle Database 12c以降のリリースでのみ使用可能です。
例として、次のJSONファイルを考えてみます。
[
{
"ItemNumber": 1,
"Description": "One Magic Christmas",
"Part": {
"UnitPrice": 19.95,
"UPCCode": 13131092899
},
"Quantity": 9,
"Total": 179.55
},
{
"ItemNumber": 2,
"Description": "Lethal Weapon",
"Part": {
"UnitPrice": 17.95,
"UPCCode": 85391628927
},
"Quantity": 5,
"Total": 89.75
}
]
このファイルのAVROスキーマ:
{
"type": "array",
"items": {
"type": "record",
"fields": [
{
"name": "ItemNumber",
"type": "int"
},
{
"name": "Description",
"type": "string"
},
{
"name": "Part",
"type": {
"type": "record",
"fields": [
{
"name": "UnitPrice",
"type": "float"
},
{
"name": "UPCCode",
"type": "float"
}
]
}
},
{
"name": "Quantity",
"type": "int"
},
{
"name": "Total",
"type": "float"
}
]
}
}
「SQL」ページの「データをアップロード」を使用してJSONファイルをロードすると、そのファイルが2行で構成される次の表に変換されます。part
は、データ・マッピング時にCLOB (JSON)列型が割り当てられた、ネストされたオブジェクトです。
3.2.4.3.2 XMLファイル
この項では、XMLファイルをロードするための仕様を示します。
-
属性には独自の列があります
XMLデータが次のように構造化されている場合:
<?xml version="1.0"?> <catalog> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <publisher>John Doe</publisher> </book> </catalog>
表内に生成される列は、
id
、author
、title
、genre
およびpublisher
です。 -
データを解析するには、2つ以上のネスト・レベルが必要です
次の例では、1レベルのネスト(カタログ)しかないので、解析する必要のあるデータは見つかりません。
<?xml version="1.0"?> <catalog> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <publisher>John Doe</publisher> </catalog>
しかし、次の例は有効です。
<?xml version="1.0"?> <catalog> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <publisher>John Doe</publisher> </book> </catalog>
または
<?xml version="1.0"?> <catalog> <bookstore> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <publisher>John Doe</publisher> </book> </bookstore> </catalog>
または
<?xml version="1.0"?> <catalog> <bookstore> <shelf> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <publisher>John Doe</publisher> </book> </shelf> </bookstore> </catalog>
-
タグ名のハイフン(-)やピリオド(.)などの特殊文字は、列名でアンダースコア(_)に置換されます。
XMLタグ名にはハイフンとピリオドを使用できます。パーサーがXMLからJSONに変換するため、これらの文字は無効なオブジェクト・キーになります。
<?xml version="1.0"?> <catalog> <book id="bk102"> <author-name>Ralls, Kim</author-name> <title.1>Midnight Rain</title.1> <genre>Fantasy</genre> <publisher>John Doe</publisher> </book> </catalog>
生成される列は、
id
、author_name
、title_1
、genre
およびpublisher
です。 -
最初のレベルのテキストのみのタグは無視されます
<?xml version="1.0"?> <catalog> <library> New Age Library </library> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <publisher>John Doe</publisher> </book> </catalog>
<library>
タグは無視され、<book>
タグの内容のみが考慮されます。生成される列は、id
、author
、title
、genre
およびpublisher
です。 -
最初のレベルの繰返しデータは、値の配列として解釈されます
<?xml version="1.0" encoding="UTF-8"?> <items id="orders"> <item_number>1</item_number> <description>One Magic Christmas</description> <part> <unit_price>19.95</unit_price> <upccode>13131092899</upccode> </part> <quantity>9</quantity> <total>179.55</total> <item_number>2</item_number> <description>Lethal Weapon</description> <part> <unit_price>17.95</unit_price> <upccode>85391628927</upccode> </part> <quantity>5</quantity> <total>89.75</total> </items>
生成される列には
item_number
、description
、part
が含まれ、各列には、次の値をそれぞれ持つ行が1つのみ含まれます([1,2
]、["One Magic Christmas","Lethal Weapon"
]、[{" unit_price":19.95,"upccode":13131092899},{"unit_price":17.95,"upccode":85391628927
}]など。 -
値と属性を含むタグはオブジェクトに変換されます
<?xml version="1.0"?> <catalog> <book id="bk102"> <author country="ca">Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <publisher>John Doe</publisher> </book> </catalog>
<author>
タグは列に変換され、そのオブジェクトは値として次のように構造化されます。{ "_":"Ralls, Kim", "country":"ca" }
タグの値には、アンダースコア(_)がキーとして使用され、属性は"attribute_name": "attribute_value"として示されています。