美文网首页
Mysql sql 拼接Sqoop和Phoenix语句

Mysql sql 拼接Sqoop和Phoenix语句

作者: suolemen | 来源:发表于2018-12-21 14:49 被阅读34次

需求描述

       需要从myslq导入数据到大数据平台hbase,但是由于有100多张表,如果一个表一个表导入的话,工作量大。如果写代码的话,需要的时间也比较多。是否可以直接通过sql语句批量生成sqoop语句呢??

此外,除了数据接入过来之外,还需要做的就是查询,通过phoenix查询,需要创建视图,怎么通过mysql sql语句自动生成创建视图的语句呢?

需要生成的sqoop:

sqoop import -D sqoop.hbase.add.row.key=true --connect jdbc:mysql://10.3.10.210/webmagic_n --username root --password P@ssw0rd --table weather_warning --columns id,title,district,disaster_type,warning_level,source,publish_time,content,url,update_time,groupname_stamp --hbase-create-table --hbase-table weather_warning --column-family cf --hbase-row-key id --where "update_time >= 2018-06-29" -m 1 --hbase-bulkload

需要生成的phoenix语句:      

 CREATE VIEW "accident_warning_policy"( id VARCHAR PRIMARY KEY, "cf"."title" VARCHAR,"cf"."policy_type" VARCHAR,"cf"."publish_time" VARCHAR,"cf"."source" VARCHAR, "cf"."content" varchar,"cf"."attachment" VARCHAR, "cf"."url" VARCHAR, "cf"."update_time" VARCHAR);

解决方法

直接上sql:

生成的sqoop的sql:::

select    s.table_schema,s.table_name,

concat('sqoop import -D sqoop.hbase.add.row.key=true --connect jdbc:mysql://10.3.10.210/webmagic_n --username root --password P@ssw0rd --table '

,s.table_name

,' --columns '

,GROUP_CONCAT(s.column_name)

,' --hbase-create-table --hbase-table '

,s.table_name

,' --column-family cf --hbase-row-key id --where "update_time >= 2018-06-29" -m 1 --hbase-bulkload')

from   information_schema.COLUMNS s

left join   INFORMATION_SCHEMA.KEY_COLUMN_USAGE   b on s.table_schema=b.table_schema and s.table_name =b.table_name

where s.table_schema = 'webmagic_n'

and b.constraint_name='PRIMARY'

GROUP BY  s.table_name

生成phoenix的sql:::

select    s.table_schema,s.table_name ,b.column_name

, GROUP_CONCAT( case s.column_name when b.column_name then concat(b.column_name,' VARCHAR PRIMARY KEY')

else  concat('"cf"."',s.column_name,'" VARCHAR') end)

,concat('CREATE VIEW "',s.table_name,'"( ',GROUP_CONCAT( case s.column_name when b.column_name then concat(b.column_name,' VARCHAR PRIMARY KEY') else  concat('"cf"."',s.column_name,'" VARCHAR') end) ,');')

from information_schema.COLUMNS s

left join   INFORMATION_SCHEMA.KEY_COLUMN_USAGE   b on s.table_schema=b.table_schema and s.table_name =b.table_name

where s.table_schema = 'webmagic_n'

and b.constraint_name='PRIMARY'

and b.TABLE_NAME  not in ('base_data_source_02','base_data_source')

GROUP BY  s.table_name,b.column_name

如有疑问可以评论回复,谢谢大家!

相关文章

  • Mysql sql 拼接Sqoop和Phoenix语句

    需求描述: 需要从myslq导入数据到大数据平台hbase,但是由于有100多张表,如果一个表一个表导入的话...

  • Hive + Sqoop + MySQL + Spark

    安装 Hive +Sqoop+MySQL+Spark先将 system_logs.sql 导入 MySQL,使用 ...

  • Phoenix的简单使用

    Phoenix的常用操作 Phoenix是架构在Hbase上的一个SQL转化组件,它可以把sql语句转换成Hbas...

  • 搜索

    直接sql查询 用sql语句like查询,复杂的用sql语句拼接。 视图和存储过程查询 简化程序,提高执行效率,维...

  • Mybatis--动态SQL(if,where,trim)

    Mybatis框架的动态SQL技术是一种根据特定条件动态拼接SQL语句的功能,作用是为了解决拼接SQL语句字符串的...

  • sql语句拼接

    1.拼接字段 2.拼接占位符 3.拼接sql 4.全语句拼接 5.来吧展示

  • 【搬运】MySQL语句

    mysql sql语句大全

  • JDBC

    JDBC JDBC编程步骤 JDBCUtils sql注入解决了sql攻击(拼接)statment把sql语句发送...

  • YII2安全之SQL注入和XSS攻击

    SQL注入 疑问:SQL语句拼接变量 //直接把获取的$id代入(有问题)$sql...

  • SQL 注入的注释方法

    常用的数据库有 Microsoft SQL Server 和 MySQL。 SQL 语句注释方法有/* */ 和-...

网友评论

      本文标题:Mysql sql 拼接Sqoop和Phoenix语句

      本文链接:https://www.haomeiwen.com/subject/wnwmkqtx.html