目录
一、背景
这几天从零构建数仓, 需要将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增量的导入数据就很容易了。