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 数据库中。通过本文的示例,我们可以看到如何使用这个命令以及如何创建相应的表和关系图。希望本文对您有所帮助!