MySQL 导入数据
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 提供了图形化界面来导入数据,适合不熟悉命令行的用户。
导入步骤:
- 打开 MySQL Workbench 并连接到数据库。
- 在左侧面板中选择 管理(Management)选项卡。
- 点击 Data Import/Restore(数据导入/恢复)。
- 选择导入选项,可以导入 SQL 文件或 CSV 文件。
- 选择要导入的文件(例如 SQL 文件或 CSV 文件)。
- 选择目标数据库和表,点击 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 INFILE 和 mysqlimport 是最好的选择。如果是导入少量数据,INSERT INTO 或通过 PHP 脚本导入也是不错的选择。