MySQL 导入数据学习笔记

MySQL 是一个流行的开源关系型数据库管理系统,用于存储和管理大量结构化数据。在实际应用中,经常需要将数据从其他数据源导入到 MySQL 中。本文将介绍如何使用 MySQL 导入数据的常用方法。

1. 使用 LOAD DATA INFILE 语句导入 CSV 文件

LOAD DATA INFILE 语句是 MySQL 提供的一种快速导入数据的方式,可以将 CSV 文件中的数据批量导入到 MySQL 表中。

具体步骤如下:

  1. 创建一个与 CSV 文件数据结构匹配的表,例如:
sqlCopy Code
CREATE 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;
  1. 将 CSV 文件放置在 MySQL 服务器上,并确保 MySQL 用户拥有该文件的读取权限。

  2. 使用 LOAD DATA INFILE 语句导入数据,例如:

sqlCopy Code
LOAD 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 文件中的第一行,通常为表头。
  1. 查询导入结果。
sqlCopy Code
SELECT COUNT(*) FROM `mytable`;

2. 使用 mysqlimport 命令行工具导入 CSV 文件

mysqlimport 命令行工具是 MySQL 提供的另一种快速导入数据的方式,与 LOAD DATA INFILE 语句相比,其优点在于可以批量导入多个 CSV 文件。

具体步骤如下:

  1. 创建一个与 CSV 文件数据结构匹配的表,例如:
sqlCopy Code
CREATE 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;
  1. 将 CSV 文件放置在 MySQL 服务器上,并确保 MySQL 用户拥有该文件的读取权限。

  2. 使用 mysqlimport 命令行工具导入数据,例如:

bashCopy Code
mysqlimport --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 文件中的前几行,通常为表头。
  1. 查询导入结果。
sqlCopy Code
SELECT COUNT(*) FROM `mytable`;

3. 使用 MySQL Workbench 导入 CSV 文件

MySQL Workbench 是 MySQL 官方提供的一款跨平台的数据库管理工具,其图形化界面提供了一种方便的方式来导入 CSV 文件。

具体步骤如下:

  1. 打开 MySQL Workbench,并连接到目标 MySQL 实例。

  2. 在 Navigator 面板中,选择要导入数据的数据库和表。

  3. 点击导入按钮,在弹出的对话框中选择 CSV 文件,并按照提示进行设置和预览。

  4. 点击开始导入按钮,等待导入完成。

  5. 查询导入结果。

sqlCopy Code
SELECT COUNT(*) FROM `mytable`;

实例

假设我们有一个 CSV 文件 mydata.csv,其中包含以下数据:

Copy Code
id,name,age 1,Alice,18 2,Bob,21 3,Charlie,24

我们可以使用以上三种方法之一将该数据导入到 MySQL 数据库中。例如,使用 LOAD DATA INFILE 语句的方式:

  1. 创建一个与 CSV 文件数据结构匹配的表。
sqlCopy Code
CREATE 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;
  1. 将 CSV 文件放置在 MySQL 服务器上,并确保 MySQL 用户拥有该文件的读取权限。

  2. 使用 LOAD DATA INFILE 语句导入数据。

sqlCopy Code
LOAD DATA INFILE '/path/to/mydata.csv' INTO TABLE `mytable` FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS;
  1. 查询导入结果。
sqlCopy Code
SELECT COUNT(*) FROM `mytable`;

以上命令将输出导入的记录数,即 3。