MySQL中导入大批量数据:奇妙的load data infile

拿到了一些数据,有5个表,其中4个表的数据量在几百到几万之间,利用MySQL 的workbench基本都在可以容忍的时间内完成了,但是最后一个表,大概有100W的记录,用workbench的导入工具,经常死机。乘机评估了一下workbench记录插入的效果,大概在4000条/Minute的速度。这样算下来,100W条,理论需要250分钟,四个多小时。没有办法,只能采用Load data infile命令解决。

1. 使用load data infile需要创建表,为了方便数据录入,建议表的属性都是VARCHAR类型;

2. 使用管理员身份进入DOS界面,使用命令mysql -u root -p --local-infile命令先登入MySQL;

3. 选择需要操作的数据库: mysql> use XXX;

确认导入的表是否在选择的库中:mysql> show tables;

4. 确认local_infile是否开启,

  没有开启,使用命令set global local_infile =1;

 5. 写load data infile文件之前,确认一下导入源数据文件的格式,我的坑是CSV文件用Tab隔离数据项,我没有认真看,所以导入数据报错了。

我的数据中,数据用Tab分割,每行记录用换行,因此写如下语句;

mysql>load data local infile 'd:/order.csv' into table new_table fields terminated by '\t' Lines terminated by '\r\n' ignore 1 lines;

令人惊奇的事情发生了,几秒钟(7.84 sec)后,我突然发现100W的数据已经导入到数据库中。

250分-->几秒钟,没有报任何错误。

 就是这么清奇的世界!

LOAD DATA INFILEMySQL 的一个快速导入数据的命令,可以将一个文本文件中的数据快速地导入MySQL 表中,适用于大批量数据导入操作。以下是使用 LOAD DATA INFILE 将百万级别的数据插入到 MySQL 表中的步骤: 1. 准备好数据文件 将需要导入数据保存为一个纯文本文件,文件格式可以是 CSV、TSV 等,每行对应一个数据记录,每个字段之间用特定的分隔符隔开。 2. 创建表结构 在 MySQL 中创建一个表,表的结构需要与数据文件中的数据格式相对应。 3. 使用 LOAD DATA INFILE 命令导入数据MySQL 命令行界面或者客户端工具中使用 LOAD DATA INFILE 命令导入数据,命令格式如下: ``` LOAD DATA INFILE 'data.txt' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; ``` 其中,data.txt 是数据文件的路径,table_name 是需要导入数据的表名,FIELDS TERMINATED BY ',' 表示字段之间的分隔符为逗号,LINES TERMINATED BY '\n' 表示每行记录以换行符作为分隔符。 4. 等待数据导入完成 数据导入的时间取决于数据文件的大小和服务器的性能,可能需要几分钟或者更长时间,导入过程中可以使用 SHOW PROCESSLIST 命令查看当前的进程状态。 以上就是使用 LOAD DATA INFILE 将百万级别的数据插入到 MySQL 表中的步骤。需要注意的是,在导入数据时需要确保数据文件的格式和表结构的定义完全一致,否则可能会导致数据导入失败或者数据错误。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值