将Excel文件导入到MySQL数据库中并实现列转行操作

     在处理数据的时候,因为数据源在Excel文件中,本人Excel文件的处理方法不是太会,加上朋友说在Excel中处理这样的数据很麻烦,我就想着干脆导入到数据库中通过代码解决这个问题,感兴趣的可以找我拿数据源自己试试。自己也是为了避免忘记操作,所以记录下来。

    数据格式大致如下(数据量有70w)标题是我自己加上去的。

   

    首先在数据库中新建一张名为diseny的表,表的字段需要和Excel文件中的字段数相同,然后选中该表,鼠标右键出现弹框,选择导入向导,如下图:

    

    一次完成对应步骤即可,下图为其中一个关键步骤(意为数据库表字段和Excel文件数量相对应):

    完成上述步骤,就会得到这张表:

    因为这样的表是无法满足我要做的数据分析,所以需要做简单处理,按时间分组,address列转行做表字段,表内容为costtime(等待时间),贴上对应的SQL语句:

    DROP TABLE IF EXISTS diseny_new;
    CREATE TABLE diseny_new
    SELECT time ,
    max(case WHEN address='古迹探索营' THEN costtime END) as 探索,
    max(case WHEN address='七个小矮人矿山车' THEN costtime END) as 矮人,
    max(case WHEN address='古迹探索营的绳索挑战道' THEN costtime END) as 挑战道,
    max(case WHEN address='与星球大战里的机器人朋友见面' THEN costtime END) as 机器朋友,
    max(case WHEN address='创极速光轮-雪佛兰呈献' THEN costtime END) as 雪佛兰,
    max(case WHEN address='创界:雪佛兰数字挑战' THEN costtime END) as 数字挑战,
    max(case WHEN address='加勒比海盗——沉落宝藏之战' THEN costtime END) as 沉落宝藏,
    max(case WHEN address='千年隼号' THEN costtime END) as 千年隼号,
    max(case WHEN address='变身钢铁侠' THEN costtime END) as 钢铁侠,
    max(case WHEN address='古迹探索营的探索步行道' THEN costtime END) as 步行道,
    max(case WHEN address='喷气背包飞行器' THEN costtime END) as 飞行器,
    max(case WHEN address='太空幸会史迪奇' THEN costtime END) as 史迪奇,
    max(case WHEN address='奇幻童话城堡里的迪士尼公主们' THEN costtime END) as 公主,
    max(case WHEN address='奇想花园的米奇俱乐部' THEN costtime END) as 米奇,
    max(case WHEN address='小熊维尼历险记' THEN costtime END) as 小熊,
    max(case WHEN address='小飞侠天空奇遇' THEN costtime END) as 飞侠,
    max(case WHEN address='小飞象' THEN costtime END) as 飞象,
    max(case WHEN address='巴斯光年星际营救' THEN costtime END) as 巴斯,
    max(case WHEN address='幻想曲旋转木马' THEN costtime END) as 木马,
    max(case WHEN address='探秘海妖复仇号' THEN costtime END) as 海妖,
    max(case WHEN address='探险家独木舟' THEN costtime END) as 独木舟,
    max(case WHEN address='旋转疯蜜罐' THEN costtime END) as 蜜罐,
    max(case WHEN address='星球大战远征基地' THEN costtime END) as 基地,
    max(case WHEN address='星球大战远征基地的凯洛?伦' THEN costtime END) as 凯洛伦,
    max(case WHEN address='星球大战远征基地的达斯?维达' THEN costtime END) as 达斯维达,
    max(case WHEN address='晶彩奇航' THEN costtime END) as 晶彩奇航,
    max(case WHEN address='欢笑聚友会的丛林迪士尼朋友们' THEN costtime END) as 朋友,
    max(case WHEN address='漫威英雄总部' THEN costtime END) as 漫总,
    max(case WHEN address='漫威英雄总部的美国队长' THEN costtime END) as 美国队长,
    max(case WHEN address='漫威英雄总部的蜘蛛侠' THEN costtime END) as 蜘蛛侠,
    max(case WHEN address='漫游童话时光' THEN costtime END) as 童话,
    max(case WHEN address='爱丽丝梦游仙境迷宫' THEN costtime END) as 迷宫,
    max(case WHEN address='电影放映室' THEN costtime END) as 电影 ,
    max(case WHEN address='翱翔?飞越地平线' THEN costtime END) as 地平线,
    max(case WHEN address='船奇戏水滩' THEN costtime END) as 戏水滩,

    max(case WHEN address='雷鸣山漂流' THEN costtime END) as 雷鸣山

    FROM diseny GROUP BY time

    因为偷懒的原因表字段就用了中文名称

    下图为列转行之后的数据格式(截图并不完整):

PS : 好记性,不如烂笔头,记下自己不会的,慢慢的就会了。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页