MySQL 导入数据学习笔记
MySQL 是一个流行的开源关系型数据库管理系统,用于存储和管理大量结构化数据。在实际应用中,经常需要将数据从其他数据源导入到 MySQL 中。本文将介绍如何使用 MySQL 导入数据的常用方法。
1. 使用 LOAD DATA INFILE 语句导入 CSV 文件
LOAD DATA INFILE 语句是 MySQL 提供的一种快速导入数据的方式,可以将 CSV 文件中的数据批量导入到 MySQL 表中。
具体步骤如下:
- 创建一个与 CSV 文件数据结构匹配的表,例如:
sqlCopy CodeCREATE TABLE `mytable` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`age` INT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
将 CSV 文件放置在 MySQL 服务器上,并确保 MySQL 用户拥有该文件的读取权限。
-
使用 LOAD DATA INFILE 语句导入数据,例如:
sqlCopy CodeLOAD DATA INFILE '/path/to/mydata.csv' INTO TABLE `mytable`
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;
FIELDS TERMINATED BY
:指定字段分隔符。ENCLOSED BY
:指定字段值的引号字符。LINES TERMINATED BY
:指定行结束符。IGNORE 1 ROWS
:忽略 CSV 文件中的第一行,通常为表头。
- 查询导入结果。
sqlCopy CodeSELECT COUNT(*) FROM `mytable`;
2. 使用 mysqlimport 命令行工具导入 CSV 文件
mysqlimport 命令行工具是 MySQL 提供的另一种快速导入数据的方式,与 LOAD DATA INFILE 语句相比,其优点在于可以批量导入多个 CSV 文件。
具体步骤如下:
- 创建一个与 CSV 文件数据结构匹配的表,例如:
sqlCopy CodeCREATE TABLE `mytable` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`age` INT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
将 CSV 文件放置在 MySQL 服务器上,并确保 MySQL 用户拥有该文件的读取权限。
-
使用 mysqlimport 命令行工具导入数据,例如:
bashCopy Codemysqlimport --local --fields-terminated-by=, --fields-optionally-enclosed-by='"' --lines-terminated-by='\r\n' --ignore-lines=1 mydatabase /path/to/mydata.csv
--local
:指定从本地文件系统读取文件。--fields-terminated-by
:指定字段分隔符。--fields-optionally-enclosed-by
:指定字段值的引号字符。--lines-terminated-by
:指定行结束符。--ignore-lines
:忽略 CSV 文件中的前几行,通常为表头。
- 查询导入结果。
sqlCopy CodeSELECT COUNT(*) FROM `mytable`;
3. 使用 MySQL Workbench 导入 CSV 文件
MySQL Workbench 是 MySQL 官方提供的一款跨平台的数据库管理工具,其图形化界面提供了一种方便的方式来导入 CSV 文件。
具体步骤如下:
-
打开 MySQL Workbench,并连接到目标 MySQL 实例。
-
在 Navigator 面板中,选择要导入数据的数据库和表。
-
点击导入按钮,在弹出的对话框中选择 CSV 文件,并按照提示进行设置和预览。
-
点击开始导入按钮,等待导入完成。
-
查询导入结果。
sqlCopy CodeSELECT COUNT(*) FROM `mytable`;
实例
假设我们有一个 CSV 文件 mydata.csv,其中包含以下数据:
Copy Codeid,name,age
1,Alice,18
2,Bob,21
3,Charlie,24
我们可以使用以上三种方法之一将该数据导入到 MySQL 数据库中。例如,使用 LOAD DATA INFILE 语句的方式:
- 创建一个与 CSV 文件数据结构匹配的表。
sqlCopy CodeCREATE TABLE `mytable` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`age` INT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
将 CSV 文件放置在 MySQL 服务器上,并确保 MySQL 用户拥有该文件的读取权限。
-
使用 LOAD DATA INFILE 语句导入数据。
sqlCopy CodeLOAD DATA INFILE '/path/to/mydata.csv' INTO TABLE `mytable`
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;
- 查询导入结果。
sqlCopy CodeSELECT COUNT(*) FROM `mytable`;
以上命令将输出导入的记录数,即 3。