mysql8导入 psc 没有数据_新特性解读 | MySQL 8.0.22 任意格式数据导入

作者:杨涛涛

资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。

本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
MySQL 8.0.22 在今年的 10 月 19 日发布,给我们带来很多非常实用的特性。特别是对 MySQL Shell 8.0.22 来说,UTIL 组件功能更多,更加丰富,使用更加简单。

比如今天我们来介绍 import_table(importTable) 的延申功能:可定制化行输入。

import_table(importTable) 我们之前有介绍过,是一款并行导入各种格式文本的工具,封装了 MySQL 语句 load data local infile

比如说要导入一个以 TAB 为分隔符的文本数据文件:/tmp/sample_ytt.txt 到表:ytt_new.t1,可以执行下面语句:

53a2bc4e95c91825911a249eb87167f6.png 上面结果是  load data infile  语句的导入结果。 如果改用 import_table 方法来做同样的事情,基于 Python 语法,使用方法如下: d4e29d86bd8300320089bd6d8086b441.png 那接下来看另外一个需求:在导入文本文件时对每行做预处理(例如在导入数据之前更改列 r2 的值为 mod(r1,10),列 r5 的值为 abs(r4-46) ),这样可以减少导入后再次处理的时间开销。 这个需求用 load data infile 语句非常容易实现:(导入时更改列 r2 和 r5 的数据,类似 UPDATE 语法) f53a771b166749044c163ab7bc26ab80.png 那如果要用 util.import_table(importTable) 来实现上面的需求,在 MySQL 8.0.22 之前是没办法的。 随着 MySQL 8.0.22 的发布,MySQL 对 import_table 方法做了些扩充功能,其中增加了一个选项 “decodeColumns” 可以实现字段的预先输入定制化功能,并且还可以更加丰富。 接下来用 import_table 来实现上面的需求,定制化字段 r2 和 r5: 0909a72dfd2818a44154596a926895a9.png 以上 Options 选项,见下图: 2944fdb415ff833f1b1f900301071d5c.png 我来具体解释下上图的含义:蓝色字体 columns 对应的数组分别指定数据文件中的每行字段,也就是默认的 TAB 分隔符所分割的每列值,1 和 2 代表占位符,1 代表数据文件中每行的第一个列,2 代表数据文件中每行的第四列,decodeColumns 字典分别对需要预先输入的字段做处理。比如 r1 字段保留为变量 @1,r2 字段对应 mod(r1,10) 等。 如果还是不太理解变换规则,可以临时打开 general log, 上面 import_table(importTable)对应的 MySQL 日志为: 09ed717903527621452c1a77b9163e91.png 以上日志写的很清楚,内部转换为最基本的 load data infile 语法。 那这里我简单解读了下 MySQL 8.0.22 对 MySQL Shell 的一项定制化输入文本文件的新特性,更多的新特性可以继续关注。
相关推荐:

新特性解读 | MySQL 8.0 增强逻辑备份恢复工具介绍

新特性解读 | MySQL 8.0 语句摘要功能介绍

新特性解读 | GROUPING() 函数用法解析
4803e96a86c670b74929d870cd352985.png

社区近期动态

43c12a912b8e833a8590b4b510ce2c4c.png 本文关键字:#util# #数据导入# #mysql8# dea3d73107929b3e2f2438687c0e5582.gif  点一下“阅读原文”了解更多资讯
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值