zoukankan      html  css  js  c++  java
  • Mysql数据处理/行转列/列转行/分割/拼接/数据复制汇总

    mysql数据处理记录(使用的 Workbench)

    1. 生成随机数
    2. 逗号或分号拼接的字符串分割成多行
    3. 多行数据转化成用逗号拼接的字符串
    4. 将A表的数据添加到B表

    一、生成随机数

    生成18位:(19位就加颗0 / 17位就减0)

    SELECT FLOOR(+ RAND() * 10000000000000000000)

    二、将字符串分割(行转列)

    select a.ID,substring_index(substring_index(a.B,',',b.help_topic_id+1),',',-1) as NAME
    from
    AAA  a
    join
    mysql.help_topic b
    on b.help_topic_id < (length(a.B) - length(replace(a.B,',',''))+1)
    order by a.ID

    这段SQL是用逗号分割, 把(AAA替换成 表名) (B替换成需要分割的字段名)  可直接使用

    原理和解析过程去 https://sunjia-704471770-qq-com.iteye.com/blog/1912929 

    三、用分号拼接 (列转行)

    select    group_concat(name)name     from  表名 group by PARENTUUID(逗号拼接)

    分号拼接

    select group_concat(name,';')name    from 表名 group by PARENTUUID

    这样的结果是  A;,B;,C;,  改进:

    select REPLACE(group_concat(name,';'),',','')name    from  表名  group by PARENTUUID

    结果 A;B;C;

    四、将A表数据插入到B表

    1.表结构与字段都相同

    insert into B select * from  A

    注意:如果B表中已有数据  注意的是避免主键重复  如果报错先排查是否主键重复添加,最好的方法是先把A表的主键约束去掉 并使用 alter table 表名 drop ID 去掉主键再添加(B表ID自增)

    2.表结构不同 只添加个别字段

    insert into B (字段1,字段2) select 字段1,字段2  from  A   (如果字段名不一样  例:insert into B (字段1,字段2) select 字段A as 字段1,字段B as 字段2  from  A )

    补充:在数据数据迁移插入时,可将以上四大点配合使用 有问题评论区见。

    注意:本篇文章适合练习,不适合大量数据迁移,若千万级数据请出门右拐.转载请捎带本文链接。

  • 相关阅读:
    二进制安全的一些基础知识
    栈溢出笔记-第五天
    一次基于白盒的渗透测试
    栈溢出笔记-第四天
    Hadoop1-认识Hadoop大数据处理架构
    Kubernetes1-K8s的简单介绍
    Docker1 架构原理及简单使用
    了解使用wireshark抓包工具
    Linux系统设置开机自动运行脚本的方法
    Mariadb/Mysql 主主复制架构
  • 原文地址:https://www.cnblogs.com/liangweitao/p/11143592.html
Copyright © 2011-2022 走看看