`
尚将军
  • 浏览: 34727 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

sql读取数据库中的字段生成json字符串再存储

 
阅读更多
[size=medium]
--screen

   
insert overwrite ana_fx_goal.mc_daily_kv partition(hdfs_par='20161221')
select * from
(
    select
        cast(
            concat(substr('20161221', 1, 4), '-', substr('20161221', 5, 2), '-', substr('20161221', 7, 2))
            as timestamp
        )
       
         as day_begin,
        NOW()                               as generate_time,
        'screen_distribution'                   as json_key,
        json_output                 as json_value
    from
    (
    select
        concat(
            '{',
            group_concat(
                    concat(wrapped_column_key, ':', 0),
                    ','
                ),
            '}'
        ) as json_output
    from
    (      
        select
            concat('"', screen, '"') as wrapped_column_key,
            case
                when cnt is null then 'null'
                when 'int' = 'string' then concat('"', cast(cnt  as string), '"')
                else cast(cnt  as string)
            end as wrapped_column_value
        from
        (
                    with analyse_table as(
                with device_profile as(
                    select *,ana_fx_middle.get_device_info(model) as readablename from src_huidu_mc.device_profile1
                )
                select
                    deviceid,
                    screen
                from device_profile
               
            )
            select screen,count(distinct deviceid) as cnt from analyse_table group by screen
   
   
        ) as tmp1_B
    ) as tmp2_B
   
   


    ) as tmp
    limit 1
) as t1
union all
select * from
(
    select
        day_begin,
        generate_time,
        json_key,
        json_value
    from ana_fx_goal.mc_daily_kv
    where hdfs_par = '20161221'
        and json_key != 'screen_distribution'
) as t2



;

--model

   
insert overwrite ana_fx_goal.mc_daily_kv partition(hdfs_par='20161221')
select * from
(
    select
        cast(
            concat(substr('20161221', 1, 4), '-', substr('20161221', 5, 2), '-', substr('20161221', 7, 2))
            as timestamp
        )
       
         as day_begin,
        NOW()                               as generate_time,
        'model_distribution'                   as json_key,
        json_output                 as json_value
    from
    (
    select
        concat(
            '{',
            group_concat(
                    concat(wrapped_column_key, ':', wrapped_column_value),
                    ','
                ),
            '}'
        ) as json_output
    from
    (      
        select
            concat('"', dev_name, '"') as wrapped_column_key,
            case
                when cnt is null then 'null'
                when 'int' = 'string' then concat('"', cast(cnt  as string), '"')
                else cast(cnt  as string)
            end as wrapped_column_value
        from
        (
                    with analyse_table as(
                with device_profile as(
                    select *,ana_fx_middle.get_device_info(model) as readablename from src_huidu_mc.device_profile1
                )
                select
                    deviceid,
                    regexp_extract(readablename, '^([^\\t]*)\\t([^\\t]*)\\t*(.*)$', 2) as dev_name
                from device_profile
               
            )
            select dev_name,count(distinct deviceid) as cnt from analyse_table group by dev_name
   
   
        ) as tmp1_E
    ) as tmp2_E
   
   


    ) as tmp
    limit 1
) as t1
union all
select * from
(
    select
        day_begin,
        generate_time,
        json_key,
        json_value
    from ana_fx_goal.mc_daily_kv
    where hdfs_par = '20161221'
        and json_key != 'model_distribution'
) as t2



;

--brand

   
insert overwrite ana_fx_goal.mc_daily_kv partition(hdfs_par='20161221')
select * from
(
    select
        cast(
            concat(substr('20161221', 1, 4), '-', substr('20161221', 5, 2), '-', substr('20161221', 7, 2))
            as timestamp
        )
       
         as day_begin,
        NOW()                               as generate_time,
        'brand_distribution'                   as json_key,
        json_output                 as json_value
    from
    (
    select
        concat(
            '{',
            group_concat(
                    concat(wrapped_column_key, ':', wrapped_column_value),
                    ','
                ),
            '}'
        ) as json_output
    from
    (      
        select
            concat('"', dev_brand, '"') as wrapped_column_key,
            case
                when cnt is null then 'null'
                when 'int' = 'string' then concat('"', cast(cnt  as string), '"')
                else cast(cnt  as string)
            end as wrapped_column_value
        from
        (
                    with analyse_table as(
                with device_profile as(
                    select *,ana_fx_middle.get_device_info(model) as readablename from src_huidu_mc.device_profile1
                )
                select
                    deviceid,
                    regexp_extract(readablename, '^([^\\t]*)\\t([^\\t]*)\\t*(.*)$', 1) as dev_brand
                from device_profile
               
            )
            select dev_brand,count(distinct deviceid) as cnt from analyse_table group by dev_brand
   
   
        ) as tmp1_H
    ) as tmp2_H
   
   


    ) as tmp
    limit 1
) as t1
union all
select * from
(
    select
        day_begin,
        generate_time,
        json_key,
        json_value
    from ana_fx_goal.mc_daily_kv
    where hdfs_par = '20161221'
        and json_key != 'brand_distribution'
) as t2



;

[/size]
分享到:
评论

相关推荐

    Spark SQL操作JSON字段的小技巧

    首先,`get_json_object` 函数用于从JSON字符串中提取特定字段的值。它的语法是 `get_json_object(json_string, json_path)`,其中 `json_string` 是包含JSON数据的字符串,而 `json_path` 是一个类似于JSON Path的...

    Oracle JSON 字符串处理实例

    在实际应用中,我们可能需要将JSON字符串存储在`CLOB`或`BLOB`类型的列中,然后利用Oracle的JSON函数进行读取和操作。例如,`JSON_OBJECT_T`和`JSON_ARRAY_T`是两个实用的类型,它们分别代表JSON对象和数组,可以...

    Sqlite-json.rar_SQLITE JSON_Sqlite写入和读取json字符串_json sqlite_sqlit

    2. **写入JSON到SQLite**: 使用`json`函数可以将JSON字符串存储为一个BLOB类型的数据。例如,可以使用`INSERT INTO table (json_column) VALUES (json('{"key": "value"}'));`来插入一个JSON对象。 3. **读取JSON...

    Oracle截取JSON字符串内容的方法

    在这个查询中,`TTTT`表的`INFO`列包含JSON字符串,函数`parsejsonstr`将从中提取`"AGE"`字段直到`"HEIGHT"`字段前的内容。 总结来说,Oracle提供了强大的JSON支持,包括解析、查询和操作JSON数据的能力。自定义的`...

    读取oracle数据库中clob字段的值

    使用`BufferedReader`来逐行读取CLOB中的内容,并将其存储到字符串缓冲区中。这里使用了`BufferedReader`来提高读取效率。 ```java StringBuffer sb = new StringBuffer(); BufferedReader br = new ...

    mybatis中操作json类型数据(csdn)————程序.pdf

    在MyBatis中,如果要将Java对象存入或从JSON类型字段取出,我们需要一个自定义的TypeHandler来完成Java对象与JSON字符串之间的转换。 `JacksonTypeHandler`是自定义TypeHandler的一个例子,它利用Jackson库进行JSON...

    FLASH读取数据库内容

    例如,使用PHP的MySQLi或PDO扩展,可以建立到MySQL数据库的连接,执行SQL查询,然后用`json_encode`函数将查询结果转化为JSON字符串。 接下来,Flash通过使用URLLoader类发送HTTP GET或POST请求到服务器上的服务端...

    读取mysql数据库表结构生成接口文档

    这篇文档将详细阐述如何从MySQL数据库的表结构中读取信息来生成API接口文档。 首先,我们来看如何从MySQL数据库中获取表结构。在MySQL中,可以使用`DESCRIBE`或`SHOW COLUMNS`命令来查看一个表的结构。例如,如果你...

    JSON ——数据库结果集转换

    2. **手动构建JSON**:对于简单的查询结果,可以手动构建JSON字符串,但这通常效率较低且容易出错,特别是在处理复杂数据结构时。 3. **利用现有的库**:例如,使用Google的Gson库或Jackson库,它们提供了强大的...

    json格式文件解析+c# mysql连接(初学者)

    登录MySQL服务器,使用SQL命令行或者图形界面工具(如MySQL Workbench)创建一个新的数据库,然后创建相应的表结构来存储从JSON文件中解析出的数据。 对于JSON文件的解析,你可以使用Newtonsoft.Json库,它提供了...

    JSON.rar_Delphi JSON_JSON_delphi json_json delphi

    Delphi提供了JSONValue类,它可以解析JSON字符串并生成一个TJSONValue对象树,这个树可以遍历以获取数据。TJSONValue对象有ToJSONObject和ToJSONArray方法,可以将JSON字符串转换为对应的TJSONObject和TJSONArray...

    asp实现读取数据库输出json代码

    它的主要任务是根据这些参数生成SQL查询语句,打开一个ADO Recordset对象来执行查询,并将结果集转换为JSON字符串。 1. **SQL查询的构建**: - 当`curpage`大于1时,函数使用分页查询,通过两个子查询实现。第一...

    SqlServer将查询结果转换为XML和JSON

    这个存储过程将XML数据转换为JSON字符串。由于SQL Server 2016及以上版本提供了内置的JSON支持,你可以使用`FOR JSON`子句直接将查询结果转换为JSON,而无需先转换为XML。例如: ```sql SELECT * FROM table FOR ...

    数据库CHM文档生成工具(代码)

    使用这个数据库CHM文档生成工具,开发者和文档撰写者可以方便地从数据库中提取结构信息,如表结构、字段说明、索引、视图和存储过程等,然后将这些信息转换为易于阅读的文档。这有助于提高团队之间的沟通效率,减少...

    Web开发-实现MySQL中存储JSON数据和将Excel数据导入到MySQL数据库.zip

    Python的`pymysql`库通常用于与MySQL交互,它支持将JSON对象转换为字符串,然后存储到MySQL的JSON字段中。通过这个例子,你将学习如何创建包含JSON字段的数据库表,以及如何插入、查询和更新JSON数据。 接下来,...

    json格式数据到入oracle数据库java源码

    - Jackson库:Jackson是Java中常用的JSON解析库,提供了`JsonParser`和`ObjectMapper`等类,可以方便地将JSON字符串转换为Java对象。 - Gson库:Google提供的Gson库可以将JSON字符串直接映射为Java对象,反之亦然...

    MySql+JsonNet开发工具包.zip

    它可以将.NET对象序列化为JSON字符串,也可以从JSON字符串反序列化回.NET对象。这个工具包可能包括了如何使用Json.NET与MySQL数据库进行交互的示例代码,比如如何将.NET对象转换成JSON并存入MySQL,或者如何从数据库...

    mysql(5.6及以下)解析json的方法实例详解

    在MySQL 5.6中,虽然没有像更高版本那样的JSON列类型和丰富的JSON函数,但可以通过一些字符串处理函数来实现基本的解析功能。 `json_extract_c` 是一个自定义的MySQL函数,用于从JSON对象中提取指定字段的值。这个...

    基于Python的实现Mysql中存储Json数据.zip

    如果需要从数据库中读取数据,使用`json.loads()`反序列化JSON字符串回Python对象。 4. **查询和更新**:使用SQL语句查询和更新包含JSON数据的记录。例如,可以使用`WHERE`子句筛选满足特定条件的JSON数据,或者使用...

    Web开发-实现MySQL中存储JSON数据-Python源码示例.zip

    要将JSON对象存入MySQL的JSON字段,首先需要将Python字典或列表序列化为JSON字符串,然后作为值传递给INSERT语句。例如: ```python import json import mysql.connector data = {'key1': 'value1', 'key2': '...

Global site tag (gtag.js) - Google Analytics