将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 : 好记性,不如烂笔头,记下自己不会的,慢慢的就会了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python的pandas库和MySQLdb库来实现将csv文件导入MySQL数据库操作,具体步骤如下: 1. 安装pandas库和MySQLdb库: ```python !pip install pandas !pip install mysqlclient ``` 2. 导入需要的库: ```python import pandas as pd import MySQLdb ``` 3. 读取csv文件并将数据存储在DataFrame对象: ```python data = pd.read_csv('your_csv_file.csv') ``` 4. 建立与MySQL数据库的连接: ```python conn = MySQLdb.connect(host='your_host', port=your_port, user='your_username', passwd='your_password', db='your_database') ``` 5. 将数据写入MySQL数据库: ```python data.to_sql(name='your_table_name', con=conn, if_exists='replace', index=False) ``` 以上代码,name参数表示要写入的表名,con参数表示与数据库建立的连接对象,if_exists参数表示如果表已经存在则替换原有表,index参数表示不需要将DataFrame对象的索引写入数据库。 完整代码如下: ```python import pandas as pd import MySQLdb # 读取csv文件并将数据存储在DataFrame对象 data = pd.read_csv('your_csv_file.csv') # 建立与MySQL数据库的连接 conn = MySQLdb.connect(host='your_host', port=your_port, user='your_username', passwd='your_password', db='your_database') # 将数据写入MySQL数据库 data.to_sql(name='your_table_name', con=conn, if_exists='replace', index=False) # 关闭连接 conn.close() ``` 注意:在执行以上代码之前,需要先在MySQL数据库创建好对应的表,使其与csv文件的列名一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值