mysql 中的資料型別與Hive 是有區別的,但是他們有規律, 有規律就好辦了, 我們可以透過寫程式來批次處理,來提高我們的工作效率。
來我們開幹。
MySQL 中的表結構都是存在一個固定的資料庫中,它的名字是:information_schema
欄位是儲存在固定的表中: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 替換成你的資料庫名稱。
執行結果是這樣的
格式化後是這樣的
CREATE TABLE book_module_stencil ( id string COMMENT "id", NAME string COMMENT "版塊名稱", type string COMMENT "圖書型別(0:教材;1:教輔;2課外)", stu_icon string COMMENT "學生端配置圖示的地址", tea_icon string COMMENT "老師端配置圖示的地址", sort INT COMMENT "排序", remarks string COMMENT "備註資訊", create_by string COMMENT "建立者", create_date string COMMENT "建立時間", update_by string COMMENT "更新者", update_date string COMMENT "更新時間",CODE string COMMENT "編碼(模組名稱首字母)" ) COMMENT "模組模版表";
今天的分享就到這裡。
最新評論