【实操教程】Excel文件转CSV并导入MySQL的完整步骤

日常工作中,我们经常需要将Excel中的数据迁移到MySQL数据库中,Excel转CSV是中间关键的过渡步骤。下面我会把从Excel创建、转CSV,再到导入MySQL的全过程拆解开,每个步骤都附具体操作和代码,新手也能跟着做。

一、Excel文件转CSV文件

这一步的核心是把Excel的表格数据,转成MySQL更容易识别的CSV格式,避免数据格式错乱。

1. 新建Excel数据文件

首先创建一个Excel文件student.xlsx,录入需要迁移的数据。以学生成绩表为例,数据结构如下:

id(学号) name(姓名) score(分数)
1 张三 88
2 李四 99
3 王五 90

保存文件时,注意文件名和数据列的对应关系,后续CSV会沿用这个表头。

2. 执行Excel转CSV操作

Excel直接支持转CSV格式,无需额外工具,步骤如下:

  1. 打开刚才创建的Excel文件;
  2. 点击顶部「文件」选项卡,选择「另存为」;
  3. 在弹出的对话框中,选择文件保存路径(建议记下来,后续上传服务器要用);
  4. 「保存类型」下拉框中,选择「CSV(逗号分隔)(*.csv)」;
  5. 点击「保存」,完成转换。

3. 处理CSV文件字符集(避坑关键)

如果CSV文件编码不是UTF-8,导入MySQL时可能出现中文乱码。解决方法很简单:

  • 用记事本打开转换好的student.csv
  • 点击「文件」-「另存为」,在「编码」下拉框中选择「UTF-8」;
  • 覆盖原文件,完成编码调整。

二、CSV文件导入MySQL数据库

这一步需要在MySQL中先准备好表结构,再把CSV数据"灌"进去,全程用命令行操作,清晰且高效。

1. 登录MySQL并开启本地导入权限

首先通过命令行登录MySQL,注意要带--local-infile=1参数,允许本地文件导入:

bash 复制代码
mysql -uroot -p --local-infile=1

输入密码后登录成功,再执行命令开启全局导入权限(避免后续报错):

sql 复制代码
set global local_infile = 1;

2. 创建对应的MySQL数据表

先切换到要使用的数据库(这里用martin为例,没有的话先执行create database martin;创建):

sql 复制代码
use maria;

然后创建和CSV数据匹配的表(表名student_score,字段对应id、name、score):

sql 复制代码
CREATE TABLE student_score (
 id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学生学号',
 name VARCHAR(10) NOT NULL DEFAULT '' COMMENT '姓名',
 score SMALLINT UNSIGNED NOT NULL DEFAULT '0' COMMENT '总分',
 PRIMARY KEY(id)
) ENGINE = INNODB charset = utf8mb4 COMMENT '学生分数表';

执行后可以用desc student_score;查看表结构,确认字段和类型没错。

3. 上传CSV文件到服务器

如果MySQL在远程服务器上,需要先把本地的student.csv传到服务器(以Linux服务器为例):

  1. 登录服务器,先进入临时目录/tmp/(权限足够,不易出错):

    bash 复制代码
    cd /tmp/
  2. 安装文件传输工具lrzsz(用于直接拖文件上传):

    bash 复制代码
    yum install -y lrzsz
  3. 输入rz命令,会弹出本地文件选择框,选中student.csv拖入,完成上传;

  4. ll命令查看,确认文件已在/tmp/目录下。

4. 执行CSV数据导入

核心命令是load data,指定CSV路径、字段分隔符和忽略表头(CSV第一行是表头,不用导入):

sql 复制代码
load data local infile '/tmp/student.csv' 
into table student_score 
fields terminated by ','  -- CSV用逗号分隔字段
ignore 1 lines;  -- 忽略第一行表头

执行后如果提示"Query OK, 3 rows affected",说明3条数据都导入成功了。

5. 验证导入结果

最后查询表数据,确认导入是否正确:

sql 复制代码
select * from student_score;

正常会显示以下结果,和Excel中的数据完全一致:

id name score
1 张三 88
2 李四 99
3 王五 90

三、常见问题排查

  1. 中文乱码 :检查CSV是否为UTF-8编码,MySQL表 charset是否是utf8mb4
  2. 导入权限报错 :重新执行set global local_infile = 1;,并确保登录MySQL时带了--local-infile=1
  3. 字段不匹配:确认CSV的列数和MySQL表的字段数一致,字段类型(如score是数字)也对应。

如果跟着步骤走,基本能顺利完成从Excel到MySQL的数据迁移,这套流程也适用于其他结构化数据的迁移场景。

相关推荐
城数派9 小时前
2019-2025年各区县逐月新房房价数据(Excel/Shp格式)
大数据·数据分析·excel
触想工业平板电脑一体机9 小时前
【触想智能】工业触控一体机在船舶海运设备上应用的特点和具体场景分析
android·网络·计算机外设·电脑·智能电视
Change_JW9 小时前
reserved mem addr & size
android
汤面不加鱼丸9 小时前
android实践:生成.9.png图片
android
叶羽西9 小时前
下载Android源代码
android
nono牛9 小时前
android.hardware.gatekeeper@1.0-service 与 gatekeeperd 区别
android
Elieal9 小时前
EasyExcel 实现 Excel 导入导出
java·excel
程序猿202310 小时前
MySQL的逻辑存储结构
java·数据库·mysql
霖霖总总12 小时前
[小技巧19]MySQL 权限管理全指南:用户、角色、授权与安全实践
数据库·mysql·安全