Mysqlのデータベース内のすべてのテーブルにフィールドが含まれているかどうかをクエリします

目次

1.背景

2、クエリ

1.COLUMNSテーブル

2.表

3.フィールドクエリ


1.背景

  最近のゼロからデータウェアハウスを構築するには、MySQLのデータベース内のすべてのテーブルをSqoopを使用してハイブデータウェアハウスに同期する必要があります。最初は完全インポートで、次にハイブへの増分インポートです。それぞれを表示したいMySQLのテーブル。updata_timeフィールドがあるかどうか。

2、クエリ

1.COLUMNSテーブル

テーブルの列情報を提供します。テーブルのすべての列と各列の情報について詳しく説明します。

SELECT * from information_schema.`COLUMNS`;

2.表

データベース内のテーブル(ビューを含む)に関する情報を提供します。テーブルのどのスキーマ、テーブルタイプ、テーブルエンジン、作成時間、およびその他の情報が属するかを詳細に説明します。

SELECT * from information_schema.`TABLES` ;

 3.フィールドクエリ

SELECT t.table_name,c.column_name FROM information_schema.`TABLES` t
INNER JOIN information_schema.`COLUMNS` c
ON c.TABLE_NAME = t.TABLE_NAME
WHERE t.TABLE_TYPE = 'BASE TABLE'
# 查询是否 都有 update_time 字段
AND c.COLUMN_NAME = 'update_time'
# 查询的数据库
AND t.TABLE_SCHEMA = 'data_exchange'
# 数据库中包含了其他的表, 使用模糊查询
AND t.TABLE_NAME LIKE '%dwd\_\jz\_0000%'
ORDER BY t.TABLE_TYPE 

data_exchangeデータからプッシュダウンされたデータをクエリします。これらのデータにはすべてupdate_timeフィールドが含まれます。この場合、Sqoopにデータを段階的にインポートするのは簡単です。

おすすめ

転載: blog.csdn.net/qq_35995514/article/details/108455126