mysql 导入导出数据_mysqldump导入sql文件
一、使用 mysqldump 命令行工具(推荐)
功能:导出数据库结构和数据(生成 .sql 文件),适用于备份或迁移。
语法:
mysqldump -u 用户名 -p 数据库名 > 导出路径.sql 
1. 导出整个数据库
mysqldump -u root -p mydb > /backup/mydb_backup.sql 
- 输入密码后开始导出。
 
2. 导出指定表
mysqldump -u root -p mydb table1 table2 > /backup/tables.sql 
3. 仅导出表结构(不含数据)
mysqldump -u root -p --no-data mydb > /backup/schema.sql 
4. 仅导出数据(不含表结构)
mysqldump -u root -p --no-create-info mydb > /backup/data.sql 
5. 导出时压缩文件
mysqldump -u root -p mydb | gzip > /backup/mydb_backup.sql.gz 
二、使用 SELECT ... INTO OUTFILE 语句
功能:将查询结果导出为文本文件(如 CSV),适合数据分析。
权限要求:MySQL 用户需有 FILE 权限。
1. 导出查询结果到文件
SELECT * FROM employees INTO OUTFILE \'/tmp/employees.csv\' FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"\' LINES TERMINATED BY \'\\n\'; 
2. 自定义分隔符和格式
SELECT id, name, salary FROM employees INTO OUTFILE \'/tmp/employees.txt\' FIELDS TERMINATED BY \'|\' LINES TERMINATED BY \'\\r\\n\'; 
3. 导出时处理特殊字符(如 CSV)
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(图形化操作)
- 打开 Workbench,连接数据库。
 - 导航到管理面板,点击 Data Export。
 - 选择要导出的数据库或表,设置导出路径和格式(SQL 或 CSV)。
 - 配置选项(如是否导出结构、数据行数限制等)。
 - 点击 Start Export 开始导出。
 
四、命令行直接导出(mysql -e + 重定向)
适用于快速导出简单查询结果:
mysql -u root -p -e \"SELECT * FROM mydb.employees\" > /tmp/employees.txt 
五、注意事项
- 
文件权限:
SELECT ... INTO OUTFILE需确保 MySQL 用户有服务器文件系统的写入权限。- 导出路径需在 MySQL 配置的 
secure_file_priv允许范围内(通过SHOW VARIABLES LIKE \'secure_file_priv\';查看)。 
 - 
字符编码:
- 导出时指定字符集(如 
CHARACTER SET utf8mb4),避免乱码。 
 - 导出时指定字符集(如 
 - 
大文件处理:
- 导出大型数据集时,建议分割文件或使用压缩(如 
gzip)。 
 - 导出大型数据集时,建议分割文件或使用压缩(如 
 - 
跨平台兼容性:
- 使用 
\\r\\n换行符确保 Windows 兼容性。 
 - 使用 
 
六、常用示例汇总
mysqldump -u root -p mydb > backup.sqlSELECT ... INTO OUTFILE \'/path/file.csv\' FIELDS TERMINATED BY \',\'SELECT id,name FROM table INTO OUTFILE \'/path/data.txt\'以下是 MySQL 导入数据的常用方法及详细说明:
一、使用 mysql 命令行导入 SQL 文件
适用场景:导入通过 mysqldump 导出的 .sql 备份文件。
语法:
mysql -u 用户名 -p 数据库名 < 导入文件.sql 
1. 导入整个数据库
mysql -u root -p mydb < /backup/mydb_backup.sql 
- 输入密码后开始导入。
 - 注意:需确保目标数据库已存在(除非 SQL 文件包含 
CREATE DATABASE语句)。 
2. 仅导入表结构或数据
- 如果 SQL 文件仅包含表结构(如 
schema.sql)或仅数据(如data.sql),直接运行上述命令即可。 
3. 导入时显示进度(大文件建议)
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. 基础导入
LOAD DATA INFILE \'/tmp/employees.csv\' INTO TABLE employees FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"\' LINES TERMINATED BY \'\\n\' IGNORE 1 ROWS; -- 忽略标题行 
2. 指定字符集(防止乱码)
LOAD DATA INFILE \'/tmp/orders.csv\' INTO TABLE orders CHARACTER SET utf8mb4 FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'\"\' LINES TERMINATED BY \'\\n\'; 
3. 导入时跳过/映射字段
LOAD DATA INFILE \'/tmp/data.txt\' INTO TABLE users FIELDS TERMINATED BY \'|\' (id, name, @dummy, email) -- 跳过第3列,用@dummy占位 SET created_at = NOW(); -- 动态添加字段值 
4. 从客户端本地导入
LOAD DATA LOCAL INFILE \'/path/on/client/file.csv\' INTO TABLE employees FIELDS TERMINATED BY \',\'; 
- 需在客户端启动时添加 
--local-infile参数:mysql -u root -p --local-infile 
三、使用 mysqlimport 工具(封装 LOAD DATA)
适用场景:快速导入 CSV/TXT 文件到指定表。
语法:
mysqlimport -u 用户名 -p 数据库名 文件路径 
1. 导入 CSV 文件到表
mysqlimport -u root -p --fields-terminated-by=\',\' --lines-terminated-by=\'\\n\' mydb /tmp/employees.csv 
- 默认要求文件名与表名一致(如 
employees.csv对应表employees)。 
2. 忽略标题行
mysqlimport -u root -p --ignore-lines=1 mydb /tmp/employees.csv 
四、使用 MySQL Workbench(图形化操作)
- 打开 Workbench,连接数据库。
 - 导航到管理面板,点击 Data Import。
 - 选择导入方式:
- Import from Self-Contained File:导入 
.sql备份文件。 - Import from CSV/TXT:导入文本文件到指定表。
 
 - Import from Self-Contained File:导入 
 - 配置选项(如字符集、字段分隔符)。
 - 点击 Start Import 开始导入。
 
五、命令行逐行导入(交互式)
mysql -u root -p mydb # 进入 MySQL 提示符后执行: mysql> source /backup/mydb_backup.sql; 
六、注意事项
- 
文件路径权限:
LOAD DATA INFILE要求文件必须在 MySQL 服务器机器上,且路径需在secure_file_priv允许范围内。- 检查 
secure_file_priv配置:SHOW VARIABLES LIKE \'secure_file_priv\'; 
 - 
字符编码一致性:
- 确保导入文件的字符集与数据库/表定义一致(如 
utf8mb4)。 
 - 确保导入文件的字符集与数据库/表定义一致(如 
 - 
大文件导入优化:
- 禁用自动提交:导入前执行 
SET autocommit=0;,导入后执行COMMIT;。 - 关闭外键检查:导入前执行 
SET FOREIGN_KEY_CHECKS=0;,导入后恢复为1。 - 禁用索引:导入前删除索引,导入后重建(加速插入)。
 
 - 禁用自动提交:导入前执行 
 - 
错误处理:
- 
mysql -u root -p mydb < backup.sql --force - 检查错误日志定位问题:
tail -f /var/log/mysql/error.log 
 - 
 - 
验证数据完整性:
- 导入后检查表行数:
SELECT COUNT(*) FROM employees; 
 - 导入后检查表行数:
 
七、常用示例汇总
.sql 备份文件mysql -u root -p mydb < backup.sqlmysqlimport -u root -p --fields-terminated-by=\',\' mydb /tmp/employees.csvLOAD DATA INFILE \'file.csv\' INTO TABLE t1 (col1, col2) SET created_at=NOW();

