0
点赞
收藏
分享

微信扫一扫

MySQL LOAD DATA用法示例:快速从文件中批量导入数据到表中


MySQL LOAD DATA 是一个用于快速从文件中批量导入数据到表中的命令。下面是几个使用示例:

示例1:基本用法

假设我们有一个CSV文件 data.csv,其内容如下:

id,name,age
1,John Doe,30
2,Jane Smith,25
3,Bob Johnson,35

并且我们有一个MySQL表 employees 结构如下:

CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  age INT
);

要将 data.csv 中的数据导入到 employees 表中,可以使用以下 LOAD DATA 命令:

LOAD DATA INFILE 'data.csv'
INTO TABLE employees
FIELDS TERMINATED BY ',' -- CSV格式,字段间用逗号分隔
ENCLOSED BY '"'           -- 字段值用双引号包围(如果有的话)
LINES TERMINATED BY '\n'  -- 每行数据以换行符结束
IGNORE 1 LINES            -- 忽略第一行(如果第一行为列标题)
(
  id,
  name,
  age
);

示例2:带LOCAL关键字

如果你希望从客户端机器上传文件到服务器,而非服务器本地文件,可以加上 LOCAL 关键字:

LOAD DATA LOCAL INFILE 'data.csv'
INTO TABLE employees
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(
  id,
  name,
  age
);

示例3:使用SET子句

如果需要在导入过程中进行一些计算或赋值,可以使用 SET 子句:

LOAD DATA INFILE 'data.csv'
INTO TABLE employees
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(
  id,
  @name,
  @age
)
SET name = TRIM(@name), -- 去掉首尾空白字符
    age = @age + 1;    -- 将导入的年龄加1

示例4:使用条件导入

还可以通过 WHERE 子句指定导入的条件,例如只导入年龄大于30岁的员工:

LOAD DATA INFILE 'data.csv'
INTO TABLE employees
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(
  id,
  name,
  @age
)
SET age = @age
WHERE @age > 30;

请注意,WHERE 子句在 LOAD DATA 中的实际效果可能是过滤每一行是否导入,但MySQL并不总是支持在LOAD DATA语句中使用WHERE子句进行行级别的过滤,因此这个示例仅供参考,实际使用时请查阅最新版MySQL文档确认是否支持。

在实际使用时,请确保MySQL服务有足够的权限读取文件,并且文件路径相对于MySQL进程是可达的。对于安全性方面,要注意限制LOAD DATA INFILE的权限,以免暴露敏感数据。


举报

相关推荐

0 条评论