数据库里的数据想导出成csv格式文件,怎么操作比较简单实用呢?
- 问答
- 2026-01-19 16:42:54
- 2
要从数据库里把数据导出成CSV文件,其实有很多简单又实用的方法,具体用哪种,主要看你平时用什么工具来管理数据库,以及你对电脑操作的熟悉程度,下面我就分几种最常见的情况来详细说说。
使用图形化界面工具(最推荐新手和日常使用)
如果你用的是像Navicat、DBeaver、MySQL Workbench(针对MySQL)或pgAdmin(针对PostgreSQL)这类图形化软件来管理数据库,那么导出CSV通常会非常直观,就像在电脑上复制粘贴文件一样简单。

-
以Navicat为例:
- 用Navicat连接到你的数据库。
- 在左侧的导航栏里,找到你想要导出数据的那个表。
- 右键点击这个表,在弹出的菜单里,你会看到类似“导出向导”的选项。
- 点击后,会弹出一个窗口让你选择导出格式,你毫不犹豫地选择“CSV”或者“文本文件(.csv)”。
- 你需要选择把文件保存在电脑的哪个位置,以及给文件起个什么名字。
- 通常会有一个“高级”或“选项”界面,这里很重要,你需要检查一下几个关键设置:
- 字段分隔符: 确保是英文逗号(,),CSV就是“逗号分隔值”的意思。
- 文本限定符: 通常是双引号("),这个的作用是,如果你的某个数据里本身就包含逗号,用双引号把它包起来,就不会被误认为是分隔符了,张三,工程师”会被正确识别为一个字段,而不是“张三”和“工程师”两个字段。
- 这个一定要勾选上,这样导出的CSV文件第一行就是你的字段名,姓名”、“年龄”、“部门”等,以后看数据一目了然。
- 字符编码: 一般选择“UTF-8”最好,这样可以避免中文或其他非英文字符变成乱码。
- 设置好之后,一路点击“下一步”或“确定”,软件就会开始导出,很快一个CSV文件就生成在你指定的位置了。
-
以DBeaver为例(免费且功能强大):
- 连接数据库后,同样在左侧找到数据表,右键点击。
- 选择“导出数据”。
- 在导出目标里,选择“CSV”。
- 后续的步骤和Navicat非常相似,也是设置保存路径、分隔符(确保是逗号)、编码(UTF-8)以及是否包含标题行,DBeaver的界面也很友好,按照提示一步步来基本不会出错。
在数据库的命令行工具中直接导出

如果你习惯使用命令行,或者需要在服务器上直接操作,这个方法非常高效,这里以最常用的MySQL和PostgreSQL为例。
-
对于MySQL: 你可以使用
SELECT ... INTO OUTFILE语句,你想导出users这个表的所有数据,可以登录MySQL命令行后,输入类似下面的命令:SELECT * FROM users INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' CHARACTER SET utf8mb4;INTO OUTFILE后面跟的是你要保存文件的完整路径,注意,这个路径必须是MySQL服务有权限写入的路径。FIELDS TERMINATED BY ','指定字段用逗号分隔。ENCLOSED BY '"'指定用双引号来包裹字段。LINES TERMINATED BY '\n'指定行之间用换行符分隔。CHARACTER SET utf8mb4指定字符编码。 执行这个命令后,数据就直接被写入到指定的文件里了,这种方法速度很快,特别适合处理大数据量的表。
-
对于PostgreSQL: PostgreSQL有一个专门的命令行工具
psql,它支持一个叫做\copy的元命令,用起来很方便。
\copy (SELECT * FROM users) TO '/tmp/users.csv' WITH CSV HEADER ENCODING 'UTF8';\copy后面跟一个括号,里面是你的查询语句。TO后面是文件路径。WITH CSV表示导出为CSV格式。HEADER表示包含列标题。ENCODING 'UTF8'指定编码。 这个命令的好处是,它是以当前登录的客户端用户的权限来写文件的,所以对路径的权限限制比MySQL的INTO OUTFILE要宽松一些。
在编程语言中导出(适合需要自动化或加工数据的场景)
如果你本来就是通过Python、PHP、Java等程序来操作数据库的,那么在代码里导出CSV是顺理成章的事情,这样你可以在导出前对数据进行各种处理、过滤或转换。
-
以Python为例(使用pandas库): Python的pandas库是数据处理的神器,导出CSV非常简单。
import pandas as pd from sqlalchemy import create_engine # 首先创建数据库连接 engine = create_engine('mysql+pymysql://用户名:密码@地址:端口/数据库名') # 读取整张表到DataFrame df = pd.read_sql_table('users', engine) # 将DataFrame保存为CSV文件 df.to_csv('output.csv', index=False, encoding='utf-8-sig')- 这几行代码就能完成所有工作。
index=False表示不保存pandas自动生成的行索引。 - 这种方法非常灵活,你可以在
read_sql_table里写复杂的SQL查询,只导出你需要的数据,也可以用pandas的功能对df进行清洗和计算,然后再导出。
- 这几行代码就能完成所有工作。
- 追求简单直观: 首选图形化工具 like Navicat 或 DBeaver,点点鼠标就能完成。
- 习惯命令行或服务器操作: 使用数据库自带的命令行工具(MySQL的
INTO OUTFILE或PostgreSQL的\copy),效率很高。 - 需要自动化或复杂处理: 用编程语言(如Python)来写个小脚本,一劳永逸。
无论用哪种方法,最后都要记得用Excel或文本编辑器打开生成的CSV文件检查一下,确认没有乱码、分隔正确、标题行也在,这样就大功告成了。
本文由盘雅霜于2026-01-19发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/83771.html
