📌 目录

  1. MySQL 数据导入的方式
    • 1.1 使用 mysql 命令导入 SQL 文件
    • 1.2 使用 LOAD DATA INFILE 导入数据
    • 1.3 使用 phpMyAdmin 导入数据
  2. 导入数据的常见选项
  3. 导入时的常见问题及解决方案
  4. 参考资料

MySQL 数据导入的方式

MySQL 提供了几种方式来导入数据,包括使用命令行工具、SQL 语句以及图形化工具(如 phpMyAdmin)。

1.1 使用 mysql 命令导入 SQL 文件

如果你已经有了一个 .sql 格式的备份文件,最常见的方式是使用 mysql 命令来导入数据库。此方法通常用于导入数据库结构和数据。

基本语法

mysql -u username -p database_name < backup_file.sql

📌 示例

  1. 导入 .sql 文件到指定的数据库:
mysql -u root -p my_database < my_database_backup.sql

常用选项

  • -u:指定 MySQL 用户名。
  • -p:提示输入密码。
  • <:重定向符号,用于将 SQL 文件内容输入到 MySQL。

📌 注意

  • 导入 SQL 文件时,确保目标数据库已存在。如果目标数据库不存在,需要先创建数据库。

1.2 使用 LOAD DATA INFILE 导入数据

LOAD DATA INFILE 语句用于从文件导入数据到 MySQL 表。它支持 CSV、TSV 等格式,能够高效地导入大量数据。

基本语法

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

📌 示例

  1. 从 CSV 文件导入数据:
LOAD DATA INFILE '/tmp/employees.csv'
INTO TABLE employees
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

常用选项

  • FIELDS TERMINATED BY:指定字段分隔符(例如,,\t)。
  • ENCLOSED BY:指定字段包围符(例如,"')。
  • LINES TERMINATED BY:指定行结束符(例如,\n\r\n)。

📌 注意

  • LOAD DATA INFILE 要求 MySQL 服务器具有对文件路径的读取权限,并且文件必须存储在 MySQL 服务器能够访问的目录中。
  • 使用此语句时,MySQL 用户需要具有 FILE 权限。

1.3 使用 phpMyAdmin 导入数据

对于不熟悉命令行的用户,可以通过 phpMyAdmin 图形化工具导入数据。phpMyAdmin 提供了方便的界面,支持导入 SQL 文件、CSV 文件等。

步骤

  1. 登录 phpMyAdmin。
  2. 选择要导入数据的数据库。
  3. 点击上方的 “导入” 选项。
  4. 选择文件格式(如 SQL、CSV 等)。
  5. 点击 “选择文件” 按钮,选择待导入的文件。
  6. 配置导入选项,如字符集、分隔符等。
  7. 点击 “执行” 按钮开始导入。

导入数据的常见选项

在导入数据时,可能需要根据数据的来源和格式选择合适的选项。

1️⃣ 导入 SQL 文件

使用 mysql 命令导入 SQL 文件时,可以使用 --force 选项来忽略错误并继续导入。这对于部分数据插入失败时很有用。

📌 示例

mysql -u root -p --force my_database < my_database_backup.sql

2️⃣ 导入 CSV 文件

在使用 LOAD DATA INFILE 导入 CSV 文件时,可以使用 IGNORE 选项来忽略已经存在的重复数据。

📌 示例

LOAD DATA INFILE '/tmp/employees.csv'
INTO TABLE employees
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;  -- 忽略 CSV 文件中的第一行(通常是表头)

3️⃣ 字符集设置

导入数据时,确保数据库和文件使用相同的字符集。可以使用 CHARACTER SET 选项来指定文件的字符集。

📌 示例

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


导入时的常见问题及解决方案

1️⃣ 权限问题

  • 问题:执行 LOAD DATA INFILE 时出现 “Access denied for user” 错误。
  • 解决方案:确保 MySQL 用户具有 FILE 权限,可以通过以下命令授予权限: GRANT FILE ON *.* TO 'username'@'localhost';

2️⃣ 文件路径问题

  • 问题:导入时出现 “The MySQL server is running with the –secure-file-priv option so it cannot execute this statement” 错误。
  • 解决方案:此错误通常表示 MySQL 启用了 --secure-file-priv 选项,限制了文件操作的路径。可以通过查看 MySQL 配置文件来确定文件的允许目录,并将文件移动到该目录中。

📌 检查 secure-file-priv 目录

SHOW VARIABLES LIKE 'secure_file_priv';

3️⃣ 数据格式问题

  • 问题:导入的数据格式与表结构不匹配。
  • 解决方案:确保导入文件的列顺序与目标表的列顺序一致,或者使用 FIELDS TERMINATED BYLINES TERMINATED BY 等选项进行适配。

参考资料


MySQL 提供了多种导入数据的方式,包括命令行工具、SQL 语句以及图形化工具。根据实际需求选择合适的导入方法,可以有效地将数据迁移到 MySQL 数据库中。