记一次大量CSV数据文件同步到数据库

背景:

公司的自研产品准备替换外购的产品,涉及到的数据量达到几亿,供应商推送数据采用推送到他们的OSS上面,给我们开放一个子账号用来读取数据文件。但是怎么快速的将数据文件里的数据导入到我们mysql的库中,是个难题,用程序来跑,计算下来要跑两个月且优化空间不大。
数据文件有以下特征:

  • 供应商给的数据文件间隔符还不是逗号,而是制表符’/u0001’
  • 数据文件一般在500M左右,总计有1000多个

解决:

很多数据库工具都带有导入文件的功能,少量的数据文件可以采用这种方式

比如navicate可以导入数据文件,csv文件可以当text文件导入,这样的好处是可以自己设置分割符,但是一次只能选中一个CSV文件,如果数据文件很多,真的是很折磨人,效率极低。

使用MYSQL的LOADFILE功能,可以快速的写入数据

mysql的load file命令,可以读取客户端的数据文件,而且读写速度很快,最好硬盘是固态的,这样效率更高,经过测试,300万的数据20S就可以写进去。如果文件命令是有规则的,写个代码生成一下批量执行脚本就OK了。LOADFILE脚本如下:

-- 数据文件的位置
LOAD DATA LOCAL INFILE 'D:\\scrm\\5eb696d75372c45ec22d9136\\bdMemberEventLog\\20240507\\part-00000-e90f623c-67bf-437c-8e72-5f6f8a894b85-c000.csv'
-- 要写入的目标表
INTO TABLE MEMBER_EVENT_LOG
-- 间隔符
FIELDS TERMINATED BY '' 
ENCLOSED BY '"'
ESCAPED BY ''
-- 换行符
LINES TERMINATED BY '\n'
-- csv文件的目标字段,这里取值是按顺序的
IGNORE 1 LINES
(@accountId,@channelId,@clientId, @createdAt,@id,@isSystem,@memberId,@name,@occurredAt,@openId,@properties,@unionId,@uniqueId,@updatedAt
)
SET 
-- 写入表中的字段account_id=@accountId,channel_id=@channelId,member_id=@memberId,open_id=@openId,union_id= @unionId,client_id=@clientId,name=@name,properties=@properties,unique_id=@uniqueId,is_system=@isSystem,occurred_at=CASE   WHEN @occurredAt = '' OR @occurredAt IS NULL THEN NULL  ELSE @occurredAtEND,created_at=CASE   WHEN @createdAt = '' OR @createdAt IS NULL THEN NULL  ELSE @createdAt END,updated_at=CASE   WHEN @updatedAt = '' OR @updatedAt IS NULL THEN NULL  ELSE @updatedAtEND,qm_id=@id,
file_name ='D:\\scrm\\5eb696d75372c45ec22d9136\\bdMemberEventLog\\20240507\\part-00000-e90f623c-67bf-437c-8e72-5f6f8a894b85-c000.csv';

注意:
如果遇到不能读取本地文件的报错,可以执行命令 SET GLOBAL local_infile = 1; 这样就可以读取本地文件了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时序数据库是Niche Market吗?

引言 DB-Engines的流行程度排行从其评估标准[4]可以看出完全不能够做为市场规模的评估标准。甚至于在知道市场规模后可以用这个排行作为一个避雷手册。毕竟现存市场小,可预见增长规模小,竞争大,创新不足,那只能卷价格&#xff0c…

数据结构---查找

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

运 算 符

算术运算符 算术运算符包括:,-,*,/,%,,-- 当左右两边都是数值型时,则做加法运算。 当左右两边有一方为字符串,则做拼接运算。任何一个 Java 对象都可以转换为字符串。 …

.Net实现SCrypt Hash加密

方案1 (加密后存储“算法设置”、“盐(随机值)”、“Hash值”,以“$”分隔): //Nuget引入SCrypt.NET库 using Org.BouncyCastle.Crypto.Generators; using Scrypt; using System; using System.Security.Cryptography; namespace …

MySQL 半同步复制

MySQL 半同步复制自引入以来,经历了多个版本的迭代和优化,逐步增强了其功能和性能。 MySQL 5.5:半同步复制首次引入。这个版本的半同步复制提供了基本的功能,确保了在事务提交并写入到主库的二进制日志(binlog&#xf…

8.让画面动起来

一、Unity Shader中的内置变量(时间篇) 动画效果往往都是把时间添加到一些变量的计算中,以便在时间变化的同时也可以随之变化。Unity shader提供了一系列关于时间的内置变量来允许我们方便地在Shader中访问运行时间,实现各种动画…

暴雨推出X705显示器:23.8英寸100Hz IPS屏

IT资讯 6月 7 日消息,日前,暴雨发布了一款 23.8 英寸 IPS 显示器,直屏、支持 100Hz 刷新率。 据官方介绍,X705 显示器分辨率为 19201080,亮度为 300 尼特(典型值),对比度 1000:1&…

从Log4j和Fastjson RCE漏洞认识jndi注入

文章目录 前言JNDI注入基础介绍靶场搭建漏洞验证注入工具 log4j RCE漏洞分析漏洞靶场检测工具补丁绕过 Fastjson RCE漏洞分析漏洞靶场检测工具补丁绕过 总结 前言 接着前文的学习《Java反序列化漏洞与URLDNS利用链分析》,想了解为什么 Fastjson 反序列化漏洞的利用…

量子计算的奥秘与魅力:开启未来科技的钥匙(详解)

目录 一、量子计算的基本概念 二、量子计算的基本原理 1.量子叠加态与相位态 一、概念 二、量子叠加态 定义与原理 特性与影响 应用领域 三、量子相位态 定义与原理 特性与影响 应用领域 2.量子门操作 一、概念 二、量子门操作的基本概念 三、常见的量子门操作…

关于用宽带(拨号)连接VPN无法上网,但是wifi或者热点就可以的问题

参考链接:https://zhuanlan.zhihu.com/p/580929250https://zhuanlan.zhihu.com/p/580929250 https://blog.csdn.net/Yaoyao2024/article/details/132245249文章浏览阅读10w次,点赞161次,收藏515次。很多同学在学习访问学校提供的资源时或者一…

Python | C++ | MATLAB机器人正逆向运动学动力学求解器及算法

🎯求解器算法 🎯C 计算机器人正向和逆向运动学,碰撞检测和可视化: | 🎯C运动学和动力学串行机器人建模和计算运动链 | 🎯C运动规划框架:逆运动学求解器,连接深度传感器和点云 | &am…

队列和栈的实现

文章目录 队列队列的定义队列常见的基本操作队列的顺序存储结构实现 栈栈的定义栈的常见基本操作栈的顺序存储实现 栈的链式存储实现 队列 队列的定义 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先…

Vitis HLS 学习笔记--聚合与解聚-AXI主接口

目录 1. 简介 2. 用法及语法 3. 详细解读 4. 总结 1. 简介 在使用 Vitis HLS 工具进行硬件设计时,如果你在接口上使用了结构体,工具会自动把结构体里的所有元素组合成一个整体。就像把一堆零件组装成一个玩具一样。这样做的好处是,数据可…

【西瓜书】大题

1.线性回归 思路:ywxb,w为一维数组,求均方误差MSE,对w和b分别求偏导为0得到关于w和b的闭式求解。预测第十年的代入ywxb求解即可。 2.查准率、查全率 思路:先计算每个算法测试结果的混淆矩阵,再根据混淆矩阵…

pyrouge(ROUGE-1.5.5)的安装步骤和使用说明(适用于Linux 系统)

摘要:本文讲解了如何配置和使用文本摘要的评价指标ROUGE(linux 系统)。 ✅ NLP 研 1 选手的学习笔记 简介:小王,NPU,2023级,计算机技术 研究方向:摘要生成、大语言模型生成 文章目录 一、为啥要写这篇博客&…

问题汇总:MPU6050(软件iic)

以下为个人问题汇总,排查点汇总可能大有缺陷,如有错误,欢迎指正。 排查点汇总 检查软件iic的时序操作用示波器或逻辑分析仪检查波形 无法使用逻辑分析仪进行I/O引脚波形分析 充当SDA、SCL的引脚要配置为推挽输出; 另外,逻辑分…

DeepSORT(目标跟踪算法)中的解三角方程计算标准化残差(解线性方程组)

DeepSORT(目标跟踪算法)中的解三角方程计算标准化残差(解线性方程组) flyfish 《DeepSORT(目标跟踪算法)中的计算观测值与状态估计的马氏距离》这篇文章介绍了Cholesky 分解。Cholesky 分解将协方差矩阵分…

c++序列化和反序列化简单demo

序列化和反序列化是指将数据结构或对象转换为一种可以存储或传输的格式(序列化),然后再将其恢复为原来的数据结构或对象(反序列化)。在C中,通常使用标准库和一些辅助库来实现序列化和反序列化。下面是一个简…

mybatis条件构造bug

一、需求背景 (本文源自微博客,且已获得授权) 根据传递的参数,使用mybatis-plus动态构造查询语句。参数对象如下: private Integer id;private String ip;/*** 状态:0封锁;1:已解封*/private Integer status;/*** 开始时间*…

挑战绝对不可能:再证有长度不同的射线

黄小宁 一空间坐标系中有公共汽车A,A中各座位到司机处的距离h是随着座位的不同而不同的变数,例如5号座位到司机处的距离是h3,…h5,…。A移动了一段距离变为汽车B≌A,B中5号座位到司机处的距离h’h3,…h’h5…