mysql 实现 excel 中复制某一列,粘贴转置为行功能
1. 问题描述
数据处理需要,需要将大批量的列,转置为行。
尝试使用 excel,①选择需要转置的列→②在所需位置,右键→选择性粘贴→转置,发现只转置了一部分数据。
2. 问题原因
转置的长度超过了 excel 的最大长度。
最大长度是多少没查到😂。
3. 解决方法
百度后,发现可以使用 mysql 中 group_concat 函数。
1 | SELECT GROUP_CONCAT(id separator ',') FROM `table` // id 为需要转换的列,separator后为以某字符为分割 |
发现又只转置了一部分数据。
查资料发现,默认 GROUP_CONCAT 函数返回的结果大小被 MySQL 默认限制为 1024(字节)的长度。
查看方式:
1 | show variables like "group_concat_max_len"; |
解决方法有 2 种:
(1)临时解决方案:
(该方法缺点是重启服务后设置失效,“group_concat_max_len = -1” 则为最大值,group_concat_max_len 的最大值为 4294967295 (2^32 - 1) 字节,因为处理数据量比较大,直接设置为最大值)
1 | SET GLOBAL group_concat_max_len = -1; |
(2)永久解决方案:
在 Mysql 配置文件中加入如下配置 (推荐):
1 | group_concat_max_len = -1 |
4. 相关参考
参考于该博客园博客