我想建个网站,网站建设方法:,定制棺材网站,夜场酒吧娱乐ktv类企业网站源码在很多领域#xff0c;数据的传输是基于 csv#xff0c;并且#xff0c;为了方便#xff0c;属于同一张表的多个 csv 文件还是打包成 gz 文件进行传输。
当 gz 文件传输到下游时#xff0c;需要将 gz 中的 csv 数据导入数据库#xff0c;最直接的方法是#xff1a;
在…在很多领域数据的传输是基于 csv并且为了方便属于同一张表的多个 csv 文件还是打包成 gz 文件进行传输。
当 gz 文件传输到下游时需要将 gz 中的 csv 数据导入数据库最直接的方法是
在客户机解压 gz编写 local data local infile 命令将解压后的文件按照通配符全部载入服务机上的数据库里
这种方法有一个弊端解压 gz 文件既耗费时间也耗费存储空间。
有没有办法把 gz 文件直接导入到 OceanBase 中呢我们有两种思路
让 OceanBase 识别 gz 文件支持类似下面的命令
load data local infile /home/xiaochu.yh/foo.gz INTO table test.t1 fields terminated by |;这个方案在 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然后导入到数据库。使用效果如下
[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