數(shù)據(jù)倉庫工具方法-維度表同步 MySQL表結(jié)構(gòu)同步到Hive
作者:程序人生碼出精彩
mysql 中的數(shù)據(jù)類型與Hive 是有區(qū)別的,但是他們有規(guī)律, 有規(guī)律就好辦了, 我們可以通過寫程序來批量處理,來提高我們的工作效率。
mysql 中的數(shù)據(jù)類型與Hive 是有區(qū)別的,但是他們有規(guī)律, 有規(guī)律就好辦了, 我們可以通過寫程序來批量處理,來提高我們的工作效率。


來我們開干。
MySQL 中的表結(jié)構(gòu)都是存在一個(gè)固定的數(shù)據(jù)庫中,它的名字是:information_schema
字段是存儲(chǔ)在固定的表中:COLUMNS
我們先直接上腳本
- SELECT
- CONCAT(
- 'create table ',
- TABLE_NAME,
- '(',
- substring( column_info, 1, length( column_info ) - 1 ),
- ')',
- ' comment ',
- '"',
- TABLE_COMMENT,
- '"',
- ';'
- )
- FROM
- (
- SELECT
- TABLE_NAME,
- TABLE_COMMENT,
- group_concat( CONCAT( COLUMN_NAME, ' ', DATA_TYPE, ' comment ', '"', COLUMN_COMMENT, '"' ) ) AS column_info
- FROM
- (
- SELECT
- t1.TABLE_NAME,
- CASE
- WHEN t2.TABLE_COMMENT = NULL THEN
- t1.TABLE_NAME ELSE t2.TABLE_COMMENT
- END AS TABLE_COMMENT,
- COLUMN_NAME,
- CASE
- WHEN DATA_TYPE = 'varchar' THEN
- 'string'
- WHEN DATA_TYPE = 'int' THEN
- 'int'
- WHEN DATA_TYPE = 'tinyint' THEN
- 'tinyint'
- WHEN DATA_TYPE = 'decimal' THEN
- 'double'
- WHEN DATA_TYPE = 'datetime' THEN
- 'string'
- WHEN DATA_TYPE = 'timestamp' THEN
- 'string'
- WHEN DATA_TYPE = 'float' THEN
- 'double'
- WHEN DATA_TYPE = 'double' THEN
- 'double'
- WHEN DATA_TYPE = 'bigint' THEN
- 'bigint'
- END AS DATA_TYPE,
- CASE
- WHEN COLUMN_COMMENT = NULL THEN
- COLUMN_NAME ELSE COLUMN_COMMENT
- END AS COLUMN_COMMENT
- FROM
- COLUMNS t1
- JOIN TABLES t2 ON t1.TABLE_NAME = t2.TABLE_NAME and t1.TABLE_SCHEMA = t2.TABLE_SCHEMA
- WHERE
- t1.TABLE_NAME = 'book_module_stencil' and t1.TABLE_SCHEMA='yyb_test'
- ) t3
- GROUP BY
- TABLE_NAME,
- TABLE_COMMENT
- ) t4;
book_module_stencil 替換成你的表名稱。
yyb_test 替換成你的數(shù)據(jù)庫名稱。
執(zhí)行結(jié)果是這樣的

格式化后是這樣的
- CREATE TABLE book_module_stencil (
- id string COMMENT "id",
- NAME string COMMENT "版塊名稱",
- type string COMMENT "圖書類型(0:教材;1:教輔;2課外)",
- stu_icon string COMMENT "學(xué)生端配置圖標(biāo)的地址",
- tea_icon string COMMENT "老師端配置圖標(biāo)的地址",
- sort INT COMMENT "排序",
- remarks string COMMENT "備注信息",
- create_by string COMMENT "創(chuàng)建者",
- create_date string COMMENT "創(chuàng)建時(shí)間",
- update_by string COMMENT "更新者",
- update_date string COMMENT "更新時(shí)間",
- CODE string COMMENT "編碼(模塊名稱首字母)"
- ) COMMENT "模塊模版表";
今天的分享就到這里。
責(zé)任編輯:姜華
來源:
今日頭條