利用 Local Data 导入文件到 OceanBase 的方法

news/2024/9/28 0:18:40 标签: oceanbase, 分布式数据库, 银行, 保险证券

背景

在很多传统方法中,数据的传输常依赖于csv格式。为了提高传输效率,属于同一张表的多个csv文件往往会被打包成gz文件进行传输。

当gz文件从上游传递到下游后,为了将其中的csv数据导入数据库,一种直接的做法是:

1. 在客户机端解压gz文件。

2. 使用local data local infile命令将解压后的csv文件按照通配符一次性全部导入到服务机上的数据库中。

然而,这种方法存在一个明显的弊端:解压gz文件既耗时又占用额外的存储空间。

有没有办法把 gz 文件直接导入到 OceanBase中呢?我们有两种思路:

方法一、让 OceanBase 识别 gz 文件,支持类似下面的命令:

load data local infile '/home/xiaochu.yh/foo.gz' INTO table test.t1 fields terminated by '|';

这个方案在 OceanBase v4.3.3 中支持

方法二、使用 zcat 动态解压至 Unix 管道,并通过 /dev/stdin直接导入数据到 OceanBase:

zcat  foo.gz | mysql  -h127.1 -P2828 -u myuser -pmypass -Dtest -e "load data local infile '/dev/stdin' INTO table test.t1 fields terminated by '|';"

下面的例子中演示了这种方法。将 1.txt 和 2.txt 打包成 foo.gz,然后导入到数据库 test.t1 表中,效果如下:

[xiaochu.yh]cat 1.txt
1|1
1|1
1|1


[xiaochu.yh]cat 2.txt
2|2
2|2


[xiaochu.yh]gzip -c 1.txt 2.txt > foo.gz


[xiaochu.yh]mysql  -h127.1 -P2828 -u myuser -pmypass -Dtest -e "delete from t1;"


[xiaochu.yh]zcat foo.gz | mysql  -h127.1 -P2828 -u myuser -pmypass -Dtest -e "load data local infile '/dev/stdin' INTO table test.t1 fields terminated by '|';"


[xiaochu.yh]mysql  -h127.1 -P2828 -u myuser -pmypass -Dtest -e "select * from t1;"
c1      c2
1       1
1       1
1       1
2       2
2       2

http://www.niftyadmin.cn/n/5679903.html

相关文章

class 026 哈希表、有序表和比较器的用法

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. https://space.bilibili.com/8888480?spm_id_f…

CPU中也应用到了缓存:CPU3层高速缓存,以及它的缓存一致性问题、MESI协议和Java的一些应用

为什么需要cpu高速缓存? 缓存,一般是为了用来协调两端的数据传输效率差(也可以归纳为性能差),提升响应速度。那么CPU的高速缓存是用来协调什么之间的速度差呢? CPU在处理一条指令的时候,会读写…

webpack 4 的 30 个步骤构建 react 开发环境

将 react 和 webpack4 进行结合,集 webpack 的优势于一身,从 0 开始构建一个强大的 react 开发环境。 其实很多人都有 一看就会,一做就废 的特点(当然也包括我在内),这个时候,你需要制定一个略微详细的计划&#xff0…

使用腾讯地图,在地图上圈选标记半径范围

1、引入地图&#xff1a; <!-- 引入腾讯地图 --> <script charset"utf-8" src"https://map.qq.com/api/gljs?v1.exp&keyYOUR_KEY&librariesvisualization,service"></script> 2、具体实现如下&#xff1a; export default {…

linux下的分布式Minio部署实践

Linux下的分布式Minio部署实践 分布式Minio部署可以将多块硬盘&#xff08;位于相同机器或者不同机器&#xff09;组成一个对象存储服务&#xff0c;避免单机环境下硬盘容量不足、单点故障等问题。 1. 简介 在当前的云计算和大数据时代&#xff0c;IT系统通常的设计理念都是…

SpringCloud源码:客户端分析(一)- SpringBootApplication注解类加载流程

总结一句话 用EnableDiscoveryClient注解客户端-启动类&#xff0c;配合springbootapplication&#xff0c;完成两个步骤&#xff1a; 自动读取spring-factories文件的全限定类名内容通过selectImport对这些类进行初始化 背景 spring.factories作用 在maven依赖&#xff1a; sp…

王道数据结构 | 第八章 排序【未完成】

9.27预&#xff1a;8.1 8.2 8.39.29预&#xff1a;8.4 8.5 笔记整理10.1预&#xff1a;8.6 8.7 summary 第七章 顺序查找 折半查找 分块查找 以及利用判定树计算对应的ASL&#xff08;成功 or 失败&#xff09;二叉排序树/ 二叉搜索树 已知n个结点 有多少种树形>卡特…

Zabbix自动发现SNMP主机

前言 利用Zabbix监控DELL R740主机硬件&#xff0c;监控通过自动发现主机&#xff0c;链接SNMP监控模板 一、配置自动发现 自动发现脚本 cat discovery_host.pyfrom os.path import abspath, dirname, join import json import sysreload(sys) sys.setdefaultencoding(utf-8…