码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SQL之mysql到hive批量生成建表语句


    目录

    一、需求

    二、实现步骤

    1.数据类型转换维表

    2.sql批量生成建表语句


    一、需求

    数据采集时如果使用datax的话,必须先手工建好表之后才能进行数据采集;使用sqoop的话虽然可以默认建表,但是每次还要手工配置命令。表数量不多的话还好,如果多库多表需要批量采集的话工作量会很大,因此需要一个批量生成建表语句的功能来节省人力。

    二、实现步骤

    1.数据类型转换维表

    先确定好异构数据源的数据类型转换关系,可以定义好一张维表。

    CREATE TABLE dim_data_type_convert
        (
            source string comment '源库',
            source_data_type string comment '源库数据类型',
            target string comment '目标库',
            target_data_type string comment '目标库数据类型',
            update_time string comment '更新时间'
        )
    COMMENT='数据类型转换维表';

    数据示例如下:

    源库源库数据类型目标库目标库数据类型更新时间
    mysqlbiginthivebigint20220817
    mysqlinthivebigint
    mysqltinyinthivebigint
    mysqlcharhivestring
    mysqlvarcharhivestring
    mysqldatetimehivedatetime
    mysqldecimalhivedouble
    mysqldoublehivedouble
    mysqlfloathivedouble
    mysqljsonhivestring
    mysqlmediumtexthivestring
    mysqltexthivestring
    mysqltimehivestring
    mysqltimestamphivetimestamp
    mysqlvarbinaryhivebinary
    mysqlbinaryhivebinary

    2.sql批量生成建表语句

    1. SELECT
    2. a.TABLE_NAME ,
    3. b.TABLE_COMMENT ,
    4. concat('CREATE TABLE IF NOT EXISTS ',a.TABLE_NAME ,' (',group_concat(concat(a.COLUMN_NAME,' ',
    5. c.target_data_type," COMMENT '",COLUMN_COMMENT,"'") order by a.TABLE_NAME,a.ORDINAL_POSITION) ,
    6. ") COMMENT '",b.TABLE_COMMENT ,"' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t' STORED AS orc;") AS DDL
    7. FROM
    8. (
    9. SELECT
    10. TABLE_SCHEMA,
    11. TABLE_NAME,
    12. COLUMN_NAME,
    13. ORDINAL_POSITION,
    14. DATA_TYPE,
    15. COLUMN_COMMENT
    16. FROM information_schema.COLUMNS
    17. WHERE TABLE_SCHEMA='你的库名'
    18. ) a
    19. LEFT JOIN information_schema.TABLES b
    20. ON a.TABLE_NAME=b.TABLE_NAME
    21. AND a.TABLE_SCHEMA=b.TABLE_SCHEMA
    22. --源库为mysql,目标库为hive
    23. LEFT JOIN
    24. (
    25. select
    26. *
    27. from dim_data_type_convert
    28. where source='mysql' and target='hive'
    29. ) c
    30. ON a.DATA_TYPE=c.source_data_type
    31. where b.TABLE_TYPE='BASE TABLE'
    32. GROUP BY
    33. a.TABLE_NAME,
    34. b.TABLE_COMMENT
    35. ;

    生成示例:

    TABLE_NAMETABLE_COMMENTDDL
    TABLE_NAMETABLE_COMMENT

    CREATE TABLE IF NOT EXISTS TABLE_NAME

    (COLUMN_NAME target_data_type COMMENT “COLUMN_COMMENT”)

     COMMENT "TABLE_COMMENT "

    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t'

    STORED AS orc;

  • 相关阅读:
    GitHub发布安全漏洞“死对头”CodeQL,“解放”程序员双手
    23.项目开发之量化交易抓取数据QuantTradeData(二)
    Swift学习笔记(一)基础语法
    随笔2022.12.6
    grpc、https、oauth2等认证专栏实战13:oauth2认证方式之客户端凭证式介绍
    【Vue.js 3.0源码】一文看懂Vue.js 3.0的优化
    优秀案例 | 以虚拟人IP“科普熊猫”,为2023成都市全国科普日注入新活力
    ASP.NET基于Web Mail收发系统设计与开发
    ETLCloud中多并行分支运行的设计技巧
    下载免费的ip+构建ip地址池访问网站详细教程
  • 原文地址:https://blog.csdn.net/chimchim66/article/details/126381504
  • 最新文章
  • AScript之匿名类型与动态类型
    16. LangChain ChatPromptTemplate多模态应用实战
    分享一个实验性的 DAG 流程审计 Skill
    .Net基于NetCoreKevin框架 AI 与 Hangfire 集成:实现AI智能自动任务调度
    【Azure Developer】ASP.NET Framework 4.8 集成 Azure Application Insights SDK 完整指南
    AI 让 SeaTunnel 读源码和调试过时了吗?
    修改网口MTU说明
    ELK 学习总结
    深度学习进阶(二十二)T5:NLP任务的首次大一统
    XRPC:一个能写进简历的 C++ 高性能分布式 RPC 框架,QPS 13万+
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号