MySQL 导入数据
                           
天天向上
发布: 2025-02-18 23:06:06

原创
419 人浏览过

MySQL 导入数据是数据库管理中常见的操作,尤其是在将数据从外部文件(如 CSV、SQL 文件等)导入到 MySQL 数据库时。MySQL 提供了多种导入数据的方式,以下是一些常见的方法及其相关实例。

1. 使用 mysql 命令导入 SQL 文件

mysql 命令行工具可以用来导入 .sql 文件,该文件通常是通过 mysqldump 导出的数据库备份文件。

导入整个 SQL 文件

mysql -u username -p database_name < backup.sql
  • -u username:指定 MySQL 用户名。
  • -p:提示输入密码。
  • database_name:目标数据库名。
  • < backup.sql:导入的 SQL 文件路径。

示例

mysql -u root -p testdb < backup.sql

这个命令将 backup.sql 文件中的 SQL 语句导入到 testdb 数据库中。

2. 使用 LOAD DATA INFILE 导入数据

LOAD DATA INFILE 是 MySQL 提供的一种快速导入大数据量的工具,适用于 CSV 或其他文本格式的数据。该命令可以将文件中的数据导入到指定的表中。

导入 CSV 文件

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

emp_id,emp_name,emp_salary
1,John,5000
2,Jane,6000
3,Tom,7000

我们想将这些数据导入到 employees 表中,表结构如下:

CREATE TABLE employees (
    emp_id INT,
    emp_name VARCHAR(50),
    emp_salary DECIMAL(10, 2)
);

使用 LOAD DATA INFILE 导入

LOAD DATA INFILE '/path/to/employees.csv'
INTO TABLE employees
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
  • /path/to/employees.csv:CSV 文件的完整路径,MySQL 需要能够访问该文件。
  • FIELDS TERMINATED BY ',':字段分隔符,CSV 文件中字段由逗号分隔。
  • ENCLOSED BY '"':字段值被双引号包围。
  • LINES TERMINATED BY '\n':行分隔符。
  • IGNORE 1 LINES:忽略 CSV 文件的第一行(通常是表头)。

3. 使用 MySQL Workbench 导入数据

MySQL Workbench 提供了图形化界面来导入数据,适合不熟悉命令行的用户。

导入步骤:

  1. 打开 MySQL Workbench 并连接到数据库。
  2. 在左侧面板中选择 管理(Management)选项卡。
  3. 点击 Data Import/Restore(数据导入/恢复)。
  4. 选择导入选项,可以导入 SQL 文件或 CSV 文件。
  5. 选择要导入的文件(例如 SQL 文件或 CSV 文件)。
  6. 选择目标数据库和表,点击 Start Import(开始导入)。

4. 使用 mysqlimport 命令导入数据

mysqlimport 是 MySQL 提供的一个命令行工具,专门用于导入文本文件(如 CSV、TSV)到 MySQL 数据库中。它实际上是 LOAD DATA INFILE 命令的一个封装。

导入 CSV 文件

mysqlimport -u username -p --fields-terminated-by=',' --lines-terminated-by='\n' --local database_name /path/to/employees.csv
  • --fields-terminated-by=',':字段分隔符,CSV 文件中字段由逗号分隔。
  • --lines-terminated-by='\n':行分隔符。
  • --local:指定使用本地文件。
  • database_name:目标数据库名。
  • /path/to/employees.csv:CSV 文件的路径。

示例

mysqlimport -u root -p --fields-terminated-by=',' --lines-terminated-by='\n' --local testdb /path/to/employees.csv

5. 使用 INSERT INTO 语句导入数据

如果数据量较小,也可以通过 INSERT INTO 语句将数据导入到表中。

示例:单条插入数据

INSERT INTO employees (emp_id, emp_name, emp_salary)
VALUES (1, 'John', 5000), (2, 'Jane', 6000), (3, 'Tom', 7000);

示例:从一个文件导入数据

假设你有一个包含多行数据的文本文件,可以将其读取并通过 INSERT INTO 语句导入。

mysql -u username -p database_name < data.sql

6. 使用 PHP 导入数据

在 Web 开发中,PHP 可以用来从 CSV 文件或其他格式的数据导入 MySQL 数据库。

示例:PHP 导入 CSV 数据

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "testdb";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

$file = fopen('employees.csv', 'r');

// 跳过表头
fgetcsv($file);

while (($data = fgetcsv($file)) !== FALSE) {
    $emp_id = $data[0];
    $emp_name = $data[1];
    $emp_salary = $data[2];

    $sql = "INSERT INTO employees (emp_id, emp_name, emp_salary) 
            VALUES ('$emp_id', '$emp_name', '$emp_salary')";

    if ($conn->query($sql) === TRUE) {
        echo "新记录插入成功\n";
    } else {
        echo "错误: " . $conn->error . "\n";
    }
}

fclose($file);
$conn->close();
?>

7. 总结

  • mysql 命令:用于导入 SQL 文件,这是最常用的数据库恢复和迁移方式。
  • LOAD DATA INFILE:用于导入 CSV 文件或其他文本格式数据,它是处理大量数据导入的高效方法。
  • MySQL Workbench:提供图形化界面来导入 SQL 和 CSV 文件,适合不熟悉命令行的用户。
  • mysqlimport 命令:命令行工具,用于导入文本文件,实质上是 LOAD DATA INFILE 的封装。
  • INSERT INTO 语句:适用于少量数据的手动插入。
  • PHP:适合从 CSV 等格式文件中导入数据,尤其用于 Web 应用中。

选择哪种方法取决于数据量、数据来源及具体使用场景。如果需要高效地导入大规模数据,LOAD DATA INFILEmysqlimport 是最好的选择。如果是导入少量数据,INSERT INTO 或通过 PHP 脚本导入也是不错的选择。

发表回复 0

Your email address will not be published. Required fields are marked *