插件窝 干货文章 MySQL 8.0 中,如何正确导入数据库数据?

MySQL 8.0 中,如何正确导入数据库数据?

导入 MySQL 使用 sql 699    来源:    2025-03-31

MySQL 8.0 数据库导入指南

在 MySQL 8.0 中,有几种常用的方法来导入数据库数据。以下是几种主要方法的详细说明:

1. 使用 mysql 命令行工具

mysql -u username -p database_name < file.sql
  • username: 你的 MySQL 用户名
  • database_name: 目标数据库名称(需先创建)
  • file.sql: 要导入的 SQL 文件

2. 使用 SOURCE 命令(在 MySQL 客户端内)

mysql> USE database_name;
mysql> SOURCE /path/to/file.sql;

3. 使用 mysqlimport 工具(适合 CSV 数据)

mysqlimport -u username -p --local database_name file.csv

4. 使用 LOAD DATA INFILE(高效大数据量导入)

LOAD DATA INFILE '/path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

MySQL 8.0 导入注意事项

  1. 认证插件问题:MySQL 8.0 默认使用 caching_sha2_password 认证插件,如果遇到认证问题,可以:

    ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    
  2. 字符集问题:确保导入文件的字符集与数据库一致,通常使用 UTF-8:

    SET NAMES utf8mb4;
    
  3. 大文件导入:对于大文件,可以调整参数:

    SET GLOBAL max_allowed_packet=1073741824;
    SET GLOBAL net_buffer_length=1000000;
    
  4. 事务处理:对于大型导入,考虑禁用自动提交:

    SET autocommit=0;
    -- 导入命令
    COMMIT;
    
  5. 性能优化:导入前临时禁用索引和外键检查:

    SET FOREIGN_KEY_CHECKS=0;
    SET UNIQUE_CHECKS=0;
    -- 导入命令
    SET FOREIGN_KEY_CHECKS=1;
    SET UNIQUE_CHECKS=1;
    

常见问题解决

  • 权限问题:确保用户有足够的权限执行导入操作
  • 文件路径问题:使用绝对路径,特别是使用 LOAD DATA INFILE 时
  • 版本兼容性:检查导出的 SQL 文件是否与 MySQL 8.0 兼容
  • 内存不足:对于大型数据库,可能需要调整 MySQL 内存配置

需要更具体的帮助吗?或者您遇到了特定的导入问题?