查询Mysql 某个数据库中的所有表中是否包含某个字段

目录

一、背景

二、查询

1. COLUMNS表

2. TABLES表

3. 字段的查询


一、背景

  这几天从零构建数仓, 需要将MySQL中一个数据库下的所有表 ,使用Sqoop 同步到 hive数仓,第一次是全量导入,后面是增量的导入hive, 想查看 MySQL 的每个表中是否有updata_time字段。

二、查询

1. COLUMNS表

提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。

SELECT * from information_schema.`COLUMNS`;

2. TABLES表

提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息

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