易君召
发布于 2026-09-02 / 作者:易君召 / 9 阅读
0

MySQL 数据导入导出操作指南

分为 mysqldump(命令行,最常用)mysql 命令导入 sql 文件select … into outfile /load data infile(文本批量导入导出)、Navicat/DBeaver 图形工具四种方式。

环境:MySQL 5.7 / 8.0,注意 8.0 对文件路径、secure_file_priv 有严格限制。

一、导出数据(mysqldump)

1. 导出整个数据库(包含表结构 + 数据)

# 语法
mysqldump -u用户名 -p 数据库名 > 导出文件.sql

#示例
mysqldump -uroot -p testdb > testdb_full.sql

执行后输入密码,把整个 testdb 导出为 sql 脚本。

2. 只导出表结构,不要数据

mysqldump -uroot -p -d testdb > testdb_schema.sql

3. 只导出数据,不要表结构

mysqldump -uroot -p -t testdb > testdb_data.sql

4. 导出库中部分表

#导出t_user、t_order两张表
mysqldump -uroot -p testdb t_user t_order > two_table.sql

5. 导出所有数据库

mysqldump -uroot -p --all-databases > all_db.sql

6. 带压缩导出(linux)

mysqldump -uroot -p testdb | gzip > testdb.sql.gz

常用参数说明

参数

说明

-d

仅结构,无数据

-t

仅数据,无结构

-R

导出存储过程、函数

-E

导出事件

--triggers

导出触发器

--single-transaction

InnoDB 热备份,不加锁,生产推荐

--master-data=2

记录 binlog 位置,做主从备份

生产 InnoDB 完整备份示例:

mysqldump -uroot -p -R -E --triggers --single-transaction testdb > test_bak.sql

二、导入 SQL 文件

方式 1:shell 直接用 mysql 命令导入(推荐)

mysql -uroot -p testdb < testdb_full.sql

注意:testdb 数据库需要提前建好。

压缩包导入:

gzip -d -c testdb.sql.gz | mysql -uroot -p testdb

方式 2:登录 mysql 客户端内 source 导入

mysql -uroot -p
use testdb;
source /data/backup/testdb_full.sql;

source 后面是绝对路径,Windows 注意路径斜杠写 /

三、文本 CSV/TXT 批量导出导入(select into outfile /load data infile)

⚠️ MySQL8.0 受 secure_file_priv 参数限制,只能导出到指定目录,查看:

show variables like '%secure_file_priv%';

1. 导出表数据为 csv 文件

SELECT * FROM t_user
INTO OUTFILE '/var/lib/mysql-files/t_user.csv'
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

2. 从 csv 导入表

LOAD DATA INFILE '/var/lib/mysql-files/t_user.csv'
INTO TABLE t_user
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; --忽略csv表头第一行

注意:LOAD DATA INFILE 权限要求高;本地文件可以用 LOAD DATA LOCAL INFILE,需要客户端与服务端同时开启 local_infile。

四、图形化工具导出导入

  1. Navicat

  • 导出:数据库右键 → 转储 SQL 文件

  • 导入:数据库右键 → 运行 SQL 文件

  1. DBeaver

  • 右键数据库 / 表 → 导出→SQL 脚本;导入→执行脚本文件

五、常见踩坑

  1. mysqldump 不是 mysql 客户端命令,是独立工具,Windows 需要保证mysql/bin加入环境变量。

  2. 导入报错 Unknown database:先手动创建数据库 create database testdb;

  3. 字符集乱码:导出指定字符集 --default-character-set=utf8mb4

mysqldump -uroot -p --default-character-set=utf8mb4 testdb > bak.sql
  1. 大库导入慢:mysql 导入时关闭自动提交,sql 脚本开头加上

SET autocommit=0;
...业务sql...
COMMIT;
  1. MySQL8.0 local_infile 默认关闭,需要开启才能本地 load data。

六、简单速记

  • 整库备份:mysqldump -u -p db > xxx.sql

  • 恢复:mysql -u -p db < xxx.sql

  • 客户端内恢复:use db; source '文件路径'


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/mysql-data-import-export-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/