数据导入导出

引言 提出问题 在使用MySQL过程中,经常需要: 如何备份数据库? 如何将Excel数据导入MySQL? 如何将MySQL数据导出为Excel或CSV? 如何迁移数据到另一台服务器? 测试环境如何快速导入生产数据? 这就是数据导入导出(Import/Export)的核心技能! mysqldump:数据备份工具 基础语法 mysqldump [options] database [tables] > backup.sql 备份单个数据库 # 备份整个数据库 mysqldump -u root -p mydb > mydb_backup.sql # 执行后,输入密码 Enter password: **** # 查看备份文件 ls -lh mydb_backup.sql # -rw-r--r-- 1 user staff 1.2M Jan 15 10:30 mydb_backup.sql 备份单张表 # 备份指定表 mysqldump -u root -p mydb users > users_backup.sql # 备份多张表 mysqldump -u root -p mydb users orders > tables_backup.sql 备份多个数据库 # 备份多个数据库 mysqldump -u root -p --databases db1 db2 db3 > multi_db_backup.sql 备份所有数据库 # 备份所有数据库(包括系统库) mysqldump -u root -p --all-databases > all_databases_backup.sql 常用选项 # 完整备份命令(推荐) mysqldump -u root -p \ --single-transaction \ # 一致性快照(InnoDB) --routines \ # 包含存储过程和函数 --triggers \ # 包含触发器 --events \ # 包含事件 --default-character-set=utf8mb4 \ # 字符集 mydb > mydb_full_backup.sql 选项 作用 --single-transaction 不锁表,适合InnoDB --lock-tables 锁表备份,适合MyISAM --no-data 只备份结构,不备份数据 --no-create-info 只备份数据,不备份结构 --where='条件' 按条件备份数据 只备份表结构 # 只备份表结构(DDL) mysqldump -u root -p --no-data mydb > mydb_schema.sql 只备份数据 # 只备份数据(不含表结构) mysqldump -u root -p --no-create-info mydb > mydb_data.sql 按条件备份 # 备份最近30天的订单 mysqldump -u root -p mydb orders \ --where="created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)" \ > orders_recent.sql 数据恢复(导入) 恢复数据库 # 方式1:命令行导入 mysql -u root -p mydb < mydb_backup.sql # 方式2:登录后导入 mysql -u root -p mysql> USE mydb; mysql> SOURCE /path/to/mydb_backup.sql; 创建数据库后恢复 # 如果数据库不存在,先创建 mysql -u root -p -e "CREATE DATABASE mydb CHARACTER SET utf8mb4;" # 再导入数据 mysql -u root -p mydb < mydb_backup.sql 恢复单张表 # 恢复单张表 mysql -u root -p mydb < users_backup.sql 进度显示 # 使用pv工具显示进度 pv mydb_backup.sql | mysql -u root -p mydb # 输出示例: # 1.2GB 0:05:30 [3.6MB/s] [=========> ] 45% ETA 0:06:45 CSV/TXT文件导入导出 导出为CSV -- 导出为CSV文件 SELECT * FROM users INTO OUTFILE '/var/lib/mysql-files/users.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; -- 执行结果: Query OK, 1000 rows affected (0.02 sec) 注意事项: ...

2025-11-20 · maneng

持久化入门:RDB快照详解

引言 前面我们学习了Redis的数据类型和过期机制,但有一个关键问题: Redis是内存数据库,服务器重启或宕机后,数据会丢失吗? 答案是:如果不配置持久化,数据会丢失。 Redis提供两种持久化方式: RDB(Redis Database):定时快照,保存某个时间点的数据副本 AOF(Append Only File):记录写命令日志,恢复时重放 今天我们先学习RDB,下一篇学习AOF。 一、RDB的本质 1.1 什么是RDB? RDB就是内存快照(Snapshot): Redis内存数据 ↓ 某个时间点 ↓ 完整复制到磁盘 ↓ 生成dump.rdb文件 类似于: 给电脑硬盘做Ghost镜像 虚拟机快照 游戏存档 特点: ✅ 全量备份:保存完整数据 ✅ 体积小:二进制压缩格式 ✅ 恢复快:直接加载到内存 ❌ 丢失风险:两次快照之间的数据会丢失 1.2 RDB文件在哪里? 查看配置: 127.0.0.1:6379> CONFIG GET dir 1) "dir" 2) "/var/lib/redis" # RDB文件目录 127.0.0.1:6379> CONFIG GET dbfilename 1) "dbfilename" 2) "dump.rdb" # RDB文件名 # 完整路径:/var/lib/redis/dump.rdb 文件示例: $ ls -lh /var/lib/redis/ -rw-r--r-- 1 redis redis 128M Jan 21 14:00 dump.rdb 1.3 RDB的工作流程 1. Redis接收到SAVE/BGSAVE命令或满足自动触发条件 ↓ 2. Fork子进程(写时复制) ↓ 3. 子进程将内存数据写入临时RDB文件 ↓ 4. 替换旧的RDB文件 ↓ 5. 完成,父进程继续处理请求 二、触发RDB的三种方式 2.1 手动触发:SAVE命令 阻塞式保存: ...

2025-01-21 · maneng

如约数科科技工作室

浙ICP备2025203501号

👀 本站总访问量 ...| 👤 访客数 ...| 📅 今日访问 ...