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。