当前位置: 首页 > backend >正文

mysql 导入导出数据

以下是 MySQL 导出数据文件的常用方法及详细步骤:


一、使用 mysqldump 命令行工具(推荐)

功能‌:导出数据库结构和数据(生成 .sql 文件),适用于备份或迁移。
语法‌:

 

bashCopy Code

mysqldump -u 用户名 -p 数据库名 > 导出路径.sql

1. 导出整个数据库
 

bashCopy Code

mysqldump -u root -p mydb > /backup/mydb_backup.sql

  • 输入密码后开始导出。
2. 导出指定表
 

bashCopy Code

mysqldump -u root -p mydb table1 table2 > /backup/tables.sql

3. 仅导出表结构(不含数据)
 

bashCopy Code

mysqldump -u root -p --no-data mydb > /backup/schema.sql

4. 仅导出数据(不含表结构)
 

bashCopy Code

mysqldump -u root -p --no-create-info mydb > /backup/data.sql

5. 导出时压缩文件
 

bashCopy Code

mysqldump -u root -p mydb | gzip > /backup/mydb_backup.sql.gz


二、使用 SELECT ... INTO OUTFILE 语句

功能‌:将查询结果导出为文本文件(如 CSV),适合数据分析。
权限要求‌:MySQL 用户需有 FILE 权限。

1. 导出查询结果到文件
 

sqlCopy Code

SELECT * FROM employees INTO OUTFILE '/tmp/employees.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

2. 自定义分隔符和格式
 

sqlCopy Code

SELECT id, name, salary FROM employees INTO OUTFILE '/tmp/employees.txt' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\r\n';

3. 导出时处理特殊字符(如 CSV)
 

sqlCopy Code

SELECT * FROM orders INTO OUTFILE '/tmp/orders.csv' CHARACTER SET utf8mb4 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '' LINES TERMINATED BY '\n';

注意‌:

  • 文件路径需在 MySQL 有权限写入的位置(默认仅允许导出到服务器本地目录,如 /tmp)。
  • 若需导出到客户端机器,可使用 LOCAL 关键字(需启用 --local-infile)。

三、使用 MySQL Workbench(图形化操作)

  1. 打开 Workbench‌,连接数据库。
  2. 导航到管理面板‌,点击 ‌Data Export‌。
  3. 选择要导出的数据库或表‌,设置导出路径和格式(SQL 或 CSV)。
  4. 配置选项‌(如是否导出结构、数据行数限制等)。
  5. 点击 ‌Start Export‌ 开始导出。

四、命令行直接导出(mysql -e + 重定向)

适用于快速导出简单查询结果:

 

bashCopy Code

mysql -u root -p -e "SELECT * FROM mydb.employees" > /tmp/employees.txt


五、注意事项

  1. 文件权限‌:

    • SELECT ... INTO OUTFILE 需确保 MySQL 用户有服务器文件系统的写入权限。
    • 导出路径需在 MySQL 配置的 secure_file_priv 允许范围内(通过 SHOW VARIABLES LIKE 'secure_file_priv'; 查看)。
  2. 字符编码‌:

    • 导出时指定字符集(如 CHARACTER SET utf8mb4),避免乱码。
  3. 大文件处理‌:

    • 导出大型数据集时,建议分割文件或使用压缩(如 gzip)。
  4. 跨平台兼容性‌:

    • 使用 \r\n 换行符确保 Windows 兼容性。

六、常用示例汇总

场景命令
快速备份数据库mysqldump -u root -p mydb > backup.sql
导出 CSVSELECT ... INTO OUTFILE '/path/file.csv' FIELDS TERMINATED BY ','
导出指定字段SELECT id,name FROM table INTO OUTFILE '/path/data.txt'
导出压缩文件`mysqldump -u root -p mydbgzip > backup.sql.gz`

通过以上方法,可灵活选择适合场景的数据导出方式。

mysql 导入数据呢

DeepSeek-R1满血版 回答完成

深度思考完成 用时14秒

以下是 MySQL 导入数据的常用方法及详细说明:


一、使用 mysql 命令行导入 SQL 文件

适用场景‌:导入通过 mysqldump 导出的 .sql 备份文件。
语法‌:

 

bashCopy Code

mysql -u 用户名 -p 数据库名 < 导入文件.sql

1. 导入整个数据库
 

bashCopy Code

mysql -u root -p mydb < /backup/mydb_backup.sql

  • 输入密码后开始导入。
  • 注意‌:需确保目标数据库已存在(除非 SQL 文件包含 CREATE DATABASE 语句)。
2. 仅导入表结构或数据
  • 如果 SQL 文件仅包含表结构(如 schema.sql)或仅数据(如 data.sql),直接运行上述命令即可。
3. 导入时显示进度(大文件建议)
 

bashCopy Code

pv /backup/large_backup.sql | mysql -u root -p mydb

  • 需安装 pv 工具(Pipe Viewer),实时显示导入进度。

二、使用 LOAD DATA INFILE 导入文本文件

适用场景‌:导入 CSV、TXT 等格式数据文件(需与导出的 SELECT ... INTO OUTFILE 格式匹配)。
权限要求‌:MySQL 用户需有 FILE 权限,且文件路径需在 secure_file_priv 允许范围内。

1. 基础导入
 

sqlCopy Code

LOAD DATA INFILE '/tmp/employees.csv' INTO TABLE employees FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; -- 忽略标题行

2. 指定字符集(防止乱码)
 

sqlCopy Code

LOAD DATA INFILE '/tmp/orders.csv' INTO TABLE orders CHARACTER SET utf8mb4 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

3. 导入时跳过/映射字段
 

sqlCopy Code

LOAD DATA INFILE '/tmp/data.txt' INTO TABLE users FIELDS TERMINATED BY '|' (id, name, @dummy, email) -- 跳过第3列,用@dummy占位 SET created_at = NOW(); -- 动态添加字段值

4. 从客户端本地导入
 

sqlCopy Code

LOAD DATA LOCAL INFILE '/path/on/client/file.csv' INTO TABLE employees FIELDS TERMINATED BY ',';

  • 需在客户端启动时添加 --local-infile 参数:
     

    bashCopy Code

    mysql -u root -p --local-infile


三、使用 mysqlimport 工具(封装 LOAD DATA

适用场景‌:快速导入 CSV/TXT 文件到指定表。
语法‌:

bashCopy Code

mysqlimport -u 用户名 -p 数据库名 文件路径

1. 导入 CSV 文件到表

mysqlimport -u root -p --fields-terminated-by=',' --lines-terminated-by='\n' mydb /tmp/employees.csv

  • 默认要求文件名与表名一致(如 employees.csv 对应表 employees)。
2. 忽略标题行
 

bashCopy Code

mysqlimport -u root -p --ignore-lines=1 mydb /tmp/employees.csv


四、使用 MySQL Workbench(图形化操作)

  1. 打开 Workbench‌,连接数据库。
  2. 导航到管理面板‌,点击 ‌Data Import‌。
  3. 选择导入方式‌:
    • Import from Self-Contained File‌:导入 .sql 备份文件。
    • Import from CSV/TXT‌:导入文本文件到指定表。
  4. 配置选项‌(如字符集、字段分隔符)。
  5. 点击 ‌Start Import‌ 开始导入。

五、命令行逐行导入(交互式)

 

bashCopy Code

mysql -u root -p mydb # 进入 MySQL 提示符后执行: mysql> source /backup/mydb_backup.sql;


六、注意事项

  1. 文件路径权限‌:

    • LOAD DATA INFILE 要求文件必须在 MySQL 服务器机器上,且路径需在 secure_file_priv 允许范围内。
    • 检查 secure_file_priv 配置:
       

      sqlCopy Code

      SHOW VARIABLES LIKE 'secure_file_priv';

  2. 字符编码一致性‌:

    • 确保导入文件的字符集与数据库/表定义一致(如 utf8mb4)。
  3. 大文件导入优化‌:

    • 禁用自动提交‌:导入前执行 SET autocommit=0;,导入后执行 COMMIT;
    • 关闭外键检查‌:导入前执行 SET FOREIGN_KEY_CHECKS=0;,导入后恢复为 1
    • 禁用索引‌:导入前删除索引,导入后重建(加速插入)。
  4. 错误处理‌:

    • 使用 --force 参数忽略部分错误继续导入:
       

      bashCopy Code

      mysql -u root -p mydb < backup.sql --force

    • 检查错误日志定位问题:
       

      bashCopy Code

      tail -f /var/log/mysql/error.log

  5. 验证数据完整性‌:

    • 导入后检查表行数:
       

      sqlCopy Code

      SELECT COUNT(*) FROM employees;


七、常用示例汇总

场景命令
导入 .sql 备份文件mysql -u root -p mydb < backup.sql
快速导入 CSV 到表mysqlimport -u root -p --fields-terminated-by=',' mydb /tmp/employees.csv
动态插入字段LOAD DATA INFILE 'file.csv' INTO TABLE t1 (col1, col2) SET created_at=NOW();
批量导入时优化性能禁用索引、外键检查和自动提交

通过以上方法,可灵活选择适合场景的数据导入方式。如果是生产环境,建议先在测试环境验证导

http://www.xdnf.cn/news/8891.html

相关文章:

  • Cache写策略
  • 【深度学习】1. 感知器,MLP, 梯度下降,激活函数,反向传播,链式法则
  • Unity3D 彩色打印
  • 【基础工程搭建】Load Bus Error异常问题分析
  • 双深度Q网络(Double DQN)基础解析与python实例:训练稳定倒立摆
  • 2021年认证杯SPSSPRO杯数学建模A题(第二阶段)医学图像的配准全过程文档及程序
  • SpringCloud实战:Seata分布式事务整合指南
  • 模型实战(28)之 yolov5分类模型 训练自己的数据集
  • LeetCode 1040.移动石子直到连续II
  • PowerDesigner 安装+汉化+破解
  • RAG赋能图像知识库,让AI读懂每一帧画面
  • 分布式缓存:CAP 理论在实践中的误区与思考
  • PP-OCRv5
  • Python类属性与实例属性的覆盖机制:从Vector2d案例看灵活设计
  • linux学习第15天(dup和dup2)
  • 基于大模型预测亚急性脊髓联合变性的综合技术方案研究报告大纲
  • Gitlab 的 WIP 不生效了?
  • windows和mac安装虚拟机-详细教程
  • 基于Android的军训app的设计与实现
  • vue+js 创造动态的光晕圈
  • 【风控】什么是风控策略?
  • 基于ssm+mysql的实习支教中小学学校信息管理系统(含LW+PPT+源码+系统演示视频+安装说明)
  • ae卡通打架烟雾特效
  • [创业之路-381]:企业战略管理案例分析-战略制定/设计-市场洞察“五看”:看宏观-经济-如何获得国家经济政策与愿景规划,以及技术发展趋势、技术成熟度
  • 性能优化关键:link、script和meta的正确打开方式
  • day 36
  • SOC-ESP32S3部分:12-2、编码器驱动
  • 使用JSP踩过的坑
  • 《算法笔记》12.2小节——字符串专题->KMP算法 问题 C: 剪花布条
  • 事务操作语句