当前位置: 首页 > news >正文

MySql 通过 LOAD DATA INFILE 导入大量数据

背景:要在本地Mysql导入几十万-百万条数据非常耗时,从网上找到通过load data infile 方式可以快速导入大量数据,就动手尝试了。结果就是不太适合复杂的格式数据导入,比如字段多,数据格式多等,但对于简单的表导入大量数据还是很实用的,因此记录下使用方法。

一、mysql开启文件导入功能

方法1:在命令行模式下输入以下命令

SET GLOBAL local_infile = 1;
SET GLOBAL file_upload_max_size = '100M'; -- 设置最大文件上传大小为100MB(可选)

方法2:在my.ini文件 [mysqld] 计入以下内容

注:mysql8 的my.ini 文件目录在\ProgramData\MySQL\MySQL Server 8.0\下

[mysqld]
file_upload_max_size = 100M
local_infile = 1

二、准备导入的数据文件

一般使用csv格式,字段间以逗号隔开

  • 如果导入数据里有中文,可能会导入失败,可以按一下方式尝试解决

        1.导入的数据文件格式错误:将文件编码格式改为UTF-8

        或者

        2.在my.ini设置数据库默认的编码格式

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
  • 导入时提示不能执行导入文件:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

方法1在my.ini配置文件中,将secure_file_priv的值设置为空字符串:secure_file_priv = "",修改后需要重启MySQL服务。

方法2:将导入文件放到mysql 的upload目录下 :\ProgramData\MySQL\MySQL Server 8.0\Uploads(该方法在mysql8下适用,不确定其他版本是否可行)

三、执行导入命令

导入文件准备好后,mysql -uroot -pxxxx进入mysql

1.use 数据库名

2.执行以下命令 

LOAD DATA INFILE 'D:\\ProgramData\\MySQL\\MySQL Server xxx.csv'INTO TABLE 表名 FIELDS TERMINATED BY ',' ----导入文件里字段间隔符LINES TERMINATED BY '\r\n'----每行以换行符结束(linux系统换行符为\n)ENCLOSED BY '"' ----表示字段被双引号包围(可选,如果字段没有被符号包围,可不写这句)IGNORE 1 LINES----如果用标题忽略第一行(colum1,column2...,columnN);----导入的字段名

补充:导入字段格式化

1.使用set命令:

(1)日期字段格式化(带毫秒数的时间yyyy-MM-dd HH:mm:ss 000去掉毫秒数)

(id,@var_create_time)

SET create_time= IF(@var_create_time= 'NULL', NULL,STR_TO_DATE(LEFT(@var_create_time,19), '%Y-%m-%d %H:%i:%s')));

(2)空字段插入NULL

serialName =  NULLIF(@serial_name, 'NULL'),

2.数据表中某个字段的类型为整型,在导入文件里该字段为NULL,导入时会以字符串‘NULL’插入导致报错

将导入文件里该字段值NULL 替换为\N,导入时就会以数据库的NULL值插入


http://www.mrgr.cn/news/82972.html

相关文章:

  • R语言的网络编程
  • NLP 技术的突破与未来:从词嵌入到 Transformer
  • Matlab贝叶斯估计MCMC分析药物对不同种群生物生理指标数据评估可视化
  • LLM架构从基础到精通之词向量2
  • 牛客网刷题 ——C语言初阶(2分支和循环-for)——打印菱形
  • 基于华为ENSP的OSPF状态机、工作过程、配置保姆级别详解(2)
  • [文献精汇]使用PyCaret预测 Apple 股价
  • 【简博士统计学习方法】第1章:1. 统计学习的定义与分类
  • 概率论 期末 笔记
  • 力扣刷题常用API总结 (1):字符串,字符数组
  • 【简博士统计学习方法】第1章:3. 统计学习方法的三要素
  • 【简博士统计学习方法】第1章:4. 模型的评估与选择
  • SAP 采购-生产-销售-月结 流程
  • halcon三维点云数据处理(七)find_shape_model_3d_recompute_score
  • 【CPU】页,帧,页表,页表项,三级页表
  • 前端开发 vue 中如何实现 u-form 多个form表单同时校验
  • JavaScript 实现支持过期时间的数据缓存功能
  • vue2新增删除
  • FPGA 20 ,FPGA按键消抖功能解析与实现
  • centOS7
  • Android Studio创建新项目并引入第三方jar、aar库驱动NFC读写器读写IC卡
  • 【Qt】C++11 Lambda表达式
  • 【线性代数】通俗理解特征向量与特征值
  • Java Spring Boot实现基于URL + IP访问频率限制
  • 《Python趣味编程》专栏介绍与专栏目录
  • 虚表 —— 隐藏行(简单版)