MySQLとOracleのメタデータ抽出例分析

MySQLとOracleのメタデータ抽出例分析

序文

最近、MySQL と Oracle からメタデータを抽出するタスクを受け取りました。これは基本的に、ライブラリ、スキーマ、テーブル、フィールド、パーティション、インデックス、主キー、およびライブラリ内のその他の情報を抽出し、それを Excel にエクスポートすることを意味します。

メタデータについて学び始めたばかりであまり知らなかったため、万能の Baidu を使用したいと考えました。結果、Baidu で検索したところ、sql しか表示されず、cv を使用するだけで済みました。いくつかのデータは取得できましたが、どのデータベースやテーブルを探しているのか分からず、取得したデータは求めていたものではありませんでした。タスクを完了するには、公式 Web サイトにアクセスしてドキュメントを読む必要がありました。

魚を与えるよりも、魚の釣り方を教える方が良い。私と同じ疑問を持つ友人たちの参考になるように、私の経験を書き留めました。

メタデータとは

Baidu 百科事典: メタデータは、中間データまたはリレー データとも呼ばれ、データに関するデータであり、主にデータのプロパティを記述する情報であり、保存場所、履歴データ、リソース検索、ファイル レコードの表示などの機能をサポートするために使用されます。メタデータは一種の電子カタログです。カタログ化の目的を達成するには、データの内容や特性を記述して収集し、それによってデータの検索を支援するという目的を達成する必要があります。 Dublin Core Metadata Initiative (DCMI) は、メタデータのアプリケーションです。これは、1995 年 2 月に国際図書館コンピュータ センター (OCLC) と国立スーパーコンピューティング アプリケーション センター (NCSA) が共同で主催したセミナーでした。52 人の図書館員とコンピュータの専門家が招待され、共同で仕様を開発し、インターネット上の電子ファイルを記述する一連の特性を作成しました。

メタデータは、データの構成、データ ドメイン、およびそれらの関係に関する情報です。つまり、メタデータはデータに関するデータです。

参照文書アドレス

oracle.com/cd/E17952_01 のドキュメント

オラクル: https://docs.oracle.com/en/database/oracle/oracle-database/index.html

まずはMySQLについてお話しましょう

MySQL のメタデータは、 information_schemaライブラリにビューの形式で存在し、表示のみ可能で変更することはできません。

ドキュメントを入力したら、各テーブルとフィールドの詳細を説明するinformation_schemaの紹介に直接進みます。

よく使われるクエリ mysql メタデータ sql

-- データベース SELECT `schema_name` データベース名、`DEFAULT_CHARACTER_SET_NAME` デフォルトの文字セット FROM `SCHEMATA`
 
-- テーブル SELECT `TABLE_NAME` テーブル名、`TABLE_COMMENT` 説明、`TABLE_TYPE` テーブルタイプ FROM `TABLES`
 
-- フィールド SELECT `TABLE_SCHEMA` ライブラリ名、`TABLE_NAME` テーブル名、`COLUMN_NAME` フィールド名、`COLUMN_COMMENT` フィールドの説明、`DATA_TYPE` フィールド タイプ、`CHARACTER_MAXIMUM_LENGTH` 長さ、`IS_NULLABLE` 空かどうか FROM `COLUMNS`
 
-- パーティション SELECT `TABLE_SCHEMA` データベース名、`TABLE_NAME` テーブル名、`PARTITION_NAME` パーティション名、`PARTITION_ORDINAL_POSITION` パーティション番号、`PARTITION_EXPRESSION` パーティション関数式 FROM `PARTITIONS` WHERE パーティション名 IS NOT NULL 
 
-- ビュー SELECT * FROM `VIEWS`
 
-- インデックス SELECT * FROM STATISTICS
 
-- 主キー SELECT * FROM `COLUMNS` WHERE COLUMN_KEY = 'PRI'

Oracleについて話しましょう

Oracle のメタデータは静的データ ディクショナリ ビューにあります。

データ ディクショナリ テーブルに直接アクセスすることはできませんが、データ ディクショナリ ビューを通じてテーブル内の情報にアクセスすることはできます。使用可能なデータ ディクショナリ ビューを一覧表示するには、ビュー DICTIONARY をクエリします。

静的データディクショナリビューには、ALL_、DBA_、USER_の3種類のビューがあります。

  • ALL_ ビューには、現在のユーザーがアクセスできるすべてのスキーマに関する情報が表示されます。これには、現在のユーザーがアクセスできる他のスキーマのオブジェクトに関する情報や、現在のユーザーがそれらのオブジェクトへのアクセスを許可する権限またはロールを持っているかどうかが含まれます。
  • DBA_ ビューには、データベース全体の関連情報がすべて表示されます。 DBA_ ビューは管理者専用です。 SELECT ANY DICTIONARY 権限を持つユーザーのみがアクセスできます。この権限は、システムが最初にインストールされるときに DBA ロールに割り当てられます。
  • USER_ ビューには、現在のユーザーのスキーマからのすべての情報が表示されます。これらのビューをクエリするために特別な権限は必要ありません。

単一のデータ ディクショナリ テーブルに対応する ALL_、DBA_、および USER_ ビューは通常、ほぼ同じです。

公式サイト:

その後、ドキュメントの説明を通じて対応するビューを見つけることができます。

一般的な Oracle メタデータのクエリ SQL:

-- モード SELECT * FROM DBA_TABLESPACES;
 
--テーブル選択* 
user_tables ut から LEFT JOIN user_tab_comments utc ON ut.TABLE_NAME = utc.TABLE_NAME;
 
-- フィールド選択 t.TABLE_NAME テーブル名、t.COLUMN_NAME 説明、t.DATA_TYPE タイプ、t.DATA_LENGTH 長さ、t.NULLABLE 空かどうか、t.DATA_DEFAULT デフォルト値、s.comments 説明 from user_tab_columns t LEFT JOIN user_col_comments s ON t.COLUMN_NAME = s.COLUMN_NAME WHERE t.TABLE_NAME ='ASSET_BASE_TABLE';
 
-- パーティション SELECT * FROM USER_PART_KEY_COLUMNS;
 
-- インデックス SELECT * FROM USER_INDEXES;
 
-- ビュー SELECT * FROM USER_VIEWS;
 
-- 主キー USER_CONS_COLUMNS cu、USER_CONSTRAINTS au から cu.* を選択します 
ここで、cu.constraint_name = au.constraint_name かつ au.constraint_type = 'P';

要約する

これで、MySQL と Oracle のメタデータ抽出に関するこの記事は終了です。MySQL Oracle メタデータ抽出に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLでデータベースメタデータを呼び出す方法
  • MySQL メタデータ ビューとサンプル コード

<<:  HTML フォーム コントロールの無効な属性の読み取り専用と無効の概要

>>:  Linux でファイルのユーザーとグループを変更する方法

推薦する

フォームの送信イベントが応答しない

1. 問題の説明<br />JS を使用してフォームの送信メソッドを呼び出してフォームを...

HTML で div を非表示にする テーブルを非表示にする TABLE または DIV コンテンツの CSS スタイル

今夜、数日間悩まされていた問題を解決しました。本当に解決したかどうかはわかりませんが、解決されている...

Vueバスの簡単な使い方

Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...

シームレスなカルーセル効果を実現するネイティブ js

参考までに、ネイティブjsでカルーセル効果(シームレススクロール)を実現しています。具体的な内容は以...

sql_mode を変更する際の MySQL エラーの解決方法

目次ERR 1067による殺人事件2番目の問題の原因はsql_modeです3. sql_modeを設...

mysql5.7 ユーザー権限の作成、ユーザーの削除、権限の取り消し

1. ユーザーを作成します。注文: 'password' によって識別される ...

システム外のフォント参照とトランジション効果

コードをコピーコードは次のとおりです。 <span style="font-fami...

Centos8 の Django プロジェクトに nginx+uwsgi をデプロイするチュートリアル

1. 仮想環境virtualenvのインストール1. virtualenvをインストールするpip3...

MySQL インデックス最適化の説明

日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...

Node.js mysqlクライアントが認証プロトコルをサポートしていない問題を解決する

序文mysql モジュール (プロジェクト アドレスは https://github.com/mys...

Linux での透過的巨大ページの使用と無効化の概要

導入コンピューティングのニーズが拡大し続けるにつれて、アプリケーションのメモリに対する需要も増加して...

MySQL での %% のようなファジークエリの実装

1、%: 0 個以上の任意の文字を表します。あらゆるタイプと長さの文字に一致します。場合によっては、...

JavaScript での正規表現の使用について詳しく学ぶ

目次1. 正規表現とは何か1. 正規表現の特徴2. 正規表現の使用2. 正規表現における特殊文字1....

フロントエンド制作に関する簡単な議論: 互換性のために IE6 はまだ必要ですか?

国内市場ではIE6~7のサポートに対する一定の需要がまだありますが、フロントエンド開発者として、私た...

最も完全な 50 の MySQL データベース クエリ演習

このデータベース クエリ ステートメントは、インターネット上の 50 個のデータベース クエリ練習問...