MySQL 数据导入:使用 LOAD DATA INFILE 命令

在 MySQL 数据库中,我们经常需要将外部数据文件(如 CSV 文件)导入到数据库中。本文将介绍如何使用 LOAD DATA INFILE 命令实现这一操作,并提供代码示例和关系图。

什么是 LOAD DATA INFILE

LOAD DATA INFILE 是 MySQL 中一个非常强大的命令,它允许我们从文件中直接将数据导入到数据库表中。这通常比使用 INSERT 语句逐行插入数据要快得多。

使用 LOAD DATA INFILE 的基本语法

以下是 LOAD DATA INFILE 命令的基本语法:

LOAD DATA INFILE 'file_path'
INTO TABLE table_name
FIELDS TERMINATED BY 'separator'
ENCLOSED BY 'enclosure'
LINES TERMINATED BY 'line_terminator'
IGNORE number_of_lines LINES
(column1, column2, ...);
  • file_path:要导入的文件的路径。
  • table_name:目标表的名称。
  • separator:字段分隔符,通常为逗号(,)。
  • enclosure:字段的引号,通常为双引号(")。
  • line_terminator:行终止符,通常为换行符(\n)。
  • number_of_lines:要忽略的行数,通常用于跳过表头。
  • column1, column2, ...:要导入的列名。

示例:将 CSV 文件导入 MySQL 表

假设我们有一个名为 users.csv 的 CSV 文件,其内容如下:

id,name,age
1,Alice,25
2,Bob,30
3,Charlie,35

我们希望将这些数据导入名为 users 的 MySQL 表中。首先,我们需要创建这个表:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50),
  age INT
);

接下来,我们使用 LOAD DATA INFILE 命令将 CSV 文件中的数据导入到 users 表中:

LOAD DATA INFILE '/path/to/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, age);

在这个示例中,我们指定了字段分隔符为逗号(,),字段引号为双引号("),行终止符为换行符(\n),并忽略了第一行(即表头)。

关系图

以下是 users 表的 ER 图:

erDiagram
  USERS ||--o|{ DATA
  USERS {
    int id PK "Primary Key"
    string name
    int age
  }
  DATA {
    string file_path
    string table_name
    string separator
    string enclosure
    string line_terminator
    int number_of_lines
    string columns
  }

结论

LOAD DATA INFILE 是一个非常有用的命令,它可以帮助我们快速地将外部数据文件导入到 MySQL 数据库中。通过本文的示例,我们可以看到如何使用这个命令以及如何创建相应的表和关系图。希望本文对您有所帮助!