如何有效利用CSV文件进行MySQL数据导入
CSV (Comma Separated Values) 文件是一种常用的文本文件格式,它由任意数量的行列表示,每个单元格由逗号分隔。CSV 文件最常见的应用是在 microsoft Excel 中进行数据表格的导入和导出。而对于 MySQL 数据库,CSV 文件也是一种常用的数据导入方式之一。下面将介绍如何使用 MySQL 命令行工具和 PHP 脚本来有效利用 CSV 文件进行 MySQL 数据导入。
使用 MySQL 命令行工具导入 CSV 文件
MySQL 命令行工具可以通过 LOAD DATA INFILE 命令来导入 CSV 文件。以下是导入 CSV 文件的基本命令格式:
LOAD DATA INFILE 'filename.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;
其中,’filename.csv’ 是要导入的 CSV 文件名;table_name 是要导入的 MySQL 表名;FIELDS TERMINATED BY ‘,’ 表示以逗号为分隔符;ENCLOSED BY ‘”‘ 表示文本字段用双引号包含;LINES TERMINATED BY ‘\r\n’ 表示行以回车和换行符结束;IGNORE 1 ROWS 表示忽略 CSV 文件的第一行,即表头。
如果要导入的 CSV 文件中包含中文字符,需要将字符集设置为 utf8,可以在命令行执行以下语句:
SET character_set_client=utf8;
SET character_set_connection=utf8;
SET character_set_database=utf8;
SET character_set_results=utf8;
SET character_set_server=utf8;
使用 PHP 脚本导入 CSV 文件
PHP 脚本也可以通过 MySQLi 扩展的函数来导入 CSV 文件。以下是导入 CSV 文件的 PHP 脚本示例:
“`php
$servername = “localhost”;
$username = “username”;
$password = “password”;
$dbname = “database”;
// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die(“连接失败: ” . $conn->connect_error);
}
// 设置字符集
$conn->set_charset(“utf8”);
// 设置要导入的 CSV 文件名和 MySQL 表名
$csv_file = “filename.csv”;
$table_name = “table_name”;
// 打开 CSV 文件并读取数据
if (($handle = fopen($csv_file, “r”)) !== false) {
$header_row = true;
while (($data = fgetcsv($handle, 1000, “,”)) !== false) {
if ($header_row) {
$header_row = false;
continue;
}
$conn->query(“INSERT INTO $table_name(column1, column2, column3) VALUES(‘$data[0]’, ‘$data[1]’, ‘$data[2]’)”);
}
fclose($handle);
}
// 关闭数据库连接
$conn->close();
?>
其中,$servername、$username、$password 和 $dbname 是 MySQL 数据库的连接参数;$conn->set_charset("utf8") 设置 MySQL 连接的字符集为 utf8;$csv_file 是要导入的 CSV 文件名;$table_name 是要导入的 MySQL 表名;fopen() 函数打开 CSV 文件并读取数据,fgetcsv() 函数读取 CSV 文件中的每一行数据并分割成数组,if ($header_row) 用于跳过 CSV 文件的第一行,即表头。
使用以上两种方式可以有效地利用 CSV 文件导入 MySQL 数据库,并且在处理大量数据时更加方便快捷。