mysql大批量数据加载

工作中需要上传5kw数据到数据库,经测试使用nacivat时候速度极慢,此时可以使用load进行加载到数据库

具体今日需求如下:

将文件下载到本地后上传到服务器并重命名

docker cp /root/mysql/zj_5000.csv elf-mysql:/var/lib/mysql-files/zj_5000.csv

注意/var/lib/mysql-files该文件夹为mysql指定上传数据文件夹

上传后即可使用load命令加载到数据库

LOAD DATA INFILE '/var/lib/mysql-files/zj_5000.csv' INTO TABLE zj_5000
FIELDS TERMINATED BY ','  LINES TERMINATED BY '\n' (id, @y, @dummy) --  y  @y @dummy SET y = IF(@y IS NULL OR @y = '', NULL, @y); --  NULL

下面为chatgpt对命令的相关解释

这段代码是一个MySQL的LOAD DATA INFILE语句,用于将指定的CSV文件'/var/lib/mysql-files/zj_5000.csv'中的数据加载到名为'zj_5000'的表中。

下面是对每行数据的字段分隔符和行终止符进行了指定:

FIELDS TERMINATED BY ',':表示字段之间使用逗号作为分隔符
LINES TERMINATED BY '\n':表示行之间使用换行符作为终止符
接下来,定义了表中的列以及它们在CSV文件中的对应关系:

(id, @y, @dummy):表明在CSV文件中的每行数据依次对应'zj_5000'表的'id'、'@y'和'@dummy'列。
然后使用SET命令,根据一些条件对'@y'列进行了处理:

SET y = IF(@y IS NULL OR @y = '', NULL, @y):该语句使用IF函数根据条件判断来设置'y'列的值。如果'@y'为NULL或为空字符串,则将'y'设置为NULL,否则将'y'设置为'@y'的值。
总结起来,这段代码的功能是将指定CSV文件中的数据加载到'zj_5000'表中,并对其中的'y'列进行处理,将空值或NULL转换为NULL。
最后修改:2024 年 01 月 22 日
反正没人给,你也爱给不给吧。