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
2
3
SET GLOBAL group_concat_max_len = -1;

SET SESSION group_concat_max_len = -1;

(2)永久解决方案:

在 Mysql 配置文件中加入如下配置 (推荐):

1
group_concat_max_len = -1

4. 相关参考

参考于该博客园博客