如何导出500万行数据?phpMyAdmin大数据集导出CSV相关问题咨询
phpMyAdmin导出500万行级数据为CSV的操作步骤
前置参数调整(必须先操作,避免导出中断)
500万行数据属于大体积导出,默认配置大概率会触发超时、内存不足报错,先调整两个层面的参数:
- 调整php.ini配置
找到服务器上的php配置文件,修改以下参数,修改完成后重启php服务生效:post_max_size = 2G(数值略大于你预估的最终CSV体积即可)upload_max_filesize = 2Gmax_execution_time = 3600(单位为秒,给足导出执行时间)memory_limit = 1G(调高php可占用的内存上限)
- 调整phpMyAdmin配置
找到phpMyAdmin根目录下的config.inc.php文件,添加或修改两项配置:$cfg['ExecTimeLimit'] = 3600;$cfg['MemoryLimit'] = '1G';
方法1:直接导出(适合服务器性能足够、配置权限充足的场景)
- 登录phpMyAdmin,选中目标数据库后,再选中要导出的数据表
- 点击顶部导航栏的「导出」选项
- 导出方式选择「自定义」,不要使用默认的快速导出,否则无法调整适配大文件的参数
- 格式下拉菜单选择「CSV」
- 下拉到「输出」板块:
- 勾选「将输出保存到文件」
- 压缩选项建议选「gzip」,能大幅缩小下载文件体积,后续解压即可得到原始CSV
- 字符集选择
utf8mb4,避免中文等特殊字符乱码
- 下拉到「格式特定选项」板块:
- 建议勾选「在第一行显示列名」,后续数据清洗、分析需要表头的话不用额外补充
- 字段分隔符默认是逗号,如果你的数据内容本身包含大量逗号,可以改成制表符
\t,后续分析工具识别时对应调整分隔符参数即可 - 字段包裹符、转义符、换行符保持默认即可,只要和后续清洗工具的配置对齐就不会出现解析错误
- 其余参数保持默认,点击「执行」,等待文件下载完成即可
方法2:分块导出(适合参数调整受限、直接导出频繁超时的场景)
如果服务器配置无法调得很高,可以按主键拆分分批导出,避免单次请求超时:
- 先查询表的主键范围,比如主键字段为id的话,执行SQL语句
SELECT MIN(id), MAX(id) FROM 你的表名;拿到id的上下限 - 按每批50万行拆分,总共分10次导出,每次导出时在「自定义导出」的「SQL选项」板块添加WHERE筛选条件,比如第一批加
WHERE id BETWEEN 1 AND 500000,第二批加WHERE id BETWEEN 500001 AND 1000000,以此类推即可 - 所有批次导出完成后可以合并文件,Windows环境下用命令
copy *.csv 合并后文件名.csv,Linux环境下用命令cat *.csv > 合并后文件名.csv,合并时注意只保留第一个文件的表头,删除其余文件的表头行即可
常见问题排查
- 导出文件乱码:确认导出时选择的字符集为
utf8mb4,如果用Excel打开出现乱码,可以先用记事本打开CSV,另存为时选择UTF-8编码,再用Excel打开即可 - 导出中途中断:优先检查前面的参数是否配置到位,还是无法解决就直接换分块导出方案,不需要强行调整服务器配置
内容的提问来源于stack exchange,提问作者wassidi
相关产品推荐
相关产品推荐

