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

相关推荐
石山岭14 小时前
自己动手写了一个 Android 虚拟定位 App:GPSSimulate 技术实
android·前端
杉氧16 小时前
副作用 (Side Effects) 全攻略:如何像大师一样掌控 Composable 的生命周期?
android·架构·android jetpack
Kapaseker21 小时前
Kotlin Toolchain 0.11 发布:主要是把 Amper 干没了
android·kotlin
三少爷的鞋1 天前
Android 现代架构不需要事件总线进阶篇
android
杉氧2 天前
深入理解 Compose 重组机制:快照系统如何驱动 UI 精准刷新?
android·架构·android jetpack
召钱熏2 天前
状态枚举正确≠渲染正确:一个语音按钮的状态机边界修复实录
android·前端
杉氧2 天前
深度解析:Jetpack Compose 核心架构与底层原理 —— 十年安卓老兵的“破茧重生”
android·架构·android jetpack
通玄2 天前
Jetpack Compose 入门系列(七):ViewModel 与界面状态管理
android
落魄Android在线炒饭2 天前
Android Framework 开发技巧:android.jar 生成与系统快速编译验证
android
如此风景2 天前
Kotlin Flow操作符学习
android·kotlin