【实操教程】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的数据迁移,这套流程也适用于其他结构化数据的迁移场景。

相关推荐
Mr.45671 天前
Spring Boot 3 + EasyExcel 3.x 实战:构建高效、可靠的Excel导入导出服务
spring boot·后端·excel
如意机反光镜裸1 天前
excel怎么快速导入oracle
数据库·oracle·excel
卤炖阑尾炎1 天前
MySQL 数据库操作从入门到精通
数据库·mysql
段娇娇1 天前
Android jetpack LiveData (三) 粘性数据(数据倒灌)问题分析及解决方案
android·android jetpack
用户2018792831671 天前
TabLayout被ViewPager2遮盖部分导致Tab难选中
android
法欧特斯卡雷特1 天前
Kotlin 2.3.20 现已发布,来看看!
android·前端·后端
闻哥1 天前
深入理解 MySQL InnoDB Buffer Pool 的 LRU 冷热数据机制
android·java·jvm·spring boot·mysql·adb·面试
Binary-Jeff1 天前
MySQL MVCC 原理解析:Undo Log、ReadView 与版本可见性机制
java·数据库·后端·mysql·spring
bug远离Jemma1 天前
MySql基本使用命令记录
数据库·mysql·oracle
专注_每天进步一点点1 天前
mysql-connector-j(8.0 及以上版本,包括你使用的 8.3.0)并非采用 GPL 许可证,因此你在项目中引入该依赖时,不需要遵循 GPL 的开源要求(比如开源你的整个项目)
数据库·mysql·apache