MySQL导出CSV列堆叠至单列问题排查与解决
MySQL导出CSV列堆叠至单个单元格的解决方法
问题背景
MySQL导出CSV文件时,24列数据全部堆叠到单个单元格,经MS Office和Python pandas验证均存在该问题。
原错误查询
SELECT 'datetime','col2',...,'col24' UNION ALL SELECT 'DateTime','col2',...,'col24' INTO OUTFILE "SampleData.csv" FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '/n';
问题现象
- MS Office打开CSV时,所有数据集中在A列,无法自动分列
- Python使用pandas读取时,执行
df = pd.read_csv('SampleData.csv')后,df.shape返回(0,1),与预期的(1740,24)不符
修正后的查询
SELECT 'datetime','col2',...,'col24' UNION ALL SELECT 'DateTime','col2',...,'col24' INTO OUTFILE "SampleData.csv" FIELDS TERMINATED BY ',' ENCLOSED BY "" -- 移除字段包裹的引号 LINES TERMINATED BY '\n'; -- 修正换行符为标准转义格式
修正说明
- 移除字段包裹引号:原查询中
ENCLOSED BY '"'会将每个字段用双引号包裹,导致CSV解析器无法识别逗号作为列分隔符,所有内容被视为单个单元格 - 修正换行符:原查询使用
'/n'(普通字符串)而非'\n'(转义换行符),导致行分隔符无效,所有数据被识别为一行
验证结果
修正后,Python执行df = pd.read_csv('SampleData.csv')可正常读取,df.shape返回预期的(1740,24);MS Office打开CSV文件时,数据也能正确分列为24列。
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

