MySQL 从 CSV 数据加载 NULL 值

作者:编程家 分类: mysql 时间:2025-12-12

MySQL 从 CSV 数据加载 NULL 值

在MySQL数据库中,我们经常需要将外部数据加载到数据库表中进行进一步的处理和分析。CSV(逗号分隔值)是一种常见的数据格式,用于存储简单的表格数据。当处理CSV数据时,我们可能会遇到一些列中存在空值(NULL)的情况。本文将介绍如何在MySQL中从CSV数据加载NULL值,并提供相关的案例代码。

准备CSV数据

首先,我们需要准备一个包含NULL值的CSV文件。假设我们有一个名为"employees.csv"的文件,包含以下内容:

employee_id,first_name,last_name,salary

1,John,Doe,5000

2,Jane,Smith,

3,Michael,Johnson,4500

4,Amy,Williams,6000

注意,第二行的"salary"列是空值,表示该员工的薪水信息未知。

创建目标表

在将CSV数据加载到MySQL中之前,我们需要创建一个目标表来存储数据。假设我们的目标表名为"employees",包含以下列:

- employee_id INT

- first_name VARCHAR(50)

- last_name VARCHAR(50)

- salary INT

我们可以使用以下SQL语句来创建该表:

CREATE TABLE employees (

employee_id INT,

first_name VARCHAR(50),

last_name VARCHAR(50),

salary INT

);

加载CSV数据

一旦我们准备好了CSV文件和目标表,我们就可以使用MySQL的LOAD DATA INFILE语句来加载CSV数据。下面是加载CSV数据的代码示例:

LOAD DATA INFILE 'path/to/employees.csv'

INTO TABLE employees

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\n'

IGNORE 1 ROWS

(employee_id, first_name, last_name, @salary)

SET salary = NULLIF(@salary, '');

在上述代码中,我们使用LOAD DATA INFILE语句将CSV文件中的数据加载到"employees"表中。字段的分隔符为逗号,并且行的分隔符为换行符。IGNORE 1 ROWS语句用于忽略CSV文件中的表头行。最后,我们使用NULLIF函数将空值转换为NULL。

验证结果

加载完CSV数据后,我们可以执行SELECT语句来验证数据是否正确加载到目标表中。例如,我们可以执行以下查询语句来检查薪水为空的员工:

SELECT * FROM employees WHERE salary IS NULL;

预期的结果应该是第二行的数据,即Jane Smith的记录。

通过使用MySQL的LOAD DATA INFILE语句,我们可以轻松地从CSV数据加载NULL值到MySQL数据库中。在加载数据之前,我们需要准备好CSV文件和目标表,并使用合适的分隔符和行分隔符。通过使用NULLIF函数,我们可以将CSV文件中的空值转换为MySQL的NULL值。最后,我们可以执行查询语句来验证数据是否正确加载到目标表中。

希望本文能够帮助你理解如何在MySQL中从CSV数据加载NULL值,并在实际应用中提供一些指导。祝你在处理CSV数据时取得成功!