前几天接到一个需求,使用特殊的符号`|` 来作为字段分隔符,想了半天没搞定,后来在组长得指导下,查阅了项目之前的脚本才搞定了这件事。这给我的启示就是,当项目遇到奇怪的需求时,其实最好参阅以前的代码,因为这些问题很可能同事就已经遇到过了。一般像这种问题,网上是没有答案的。

首先我们看下db2导入导出数据的语法,也就是exportimportload的用法。
- export:作导出数据使用,一般的语法也就是export to filename of filetype select colname from table where xx,但大家会修改一些字符分割符和编码,格式化啥的,所以语法就稍微复杂一点。
- import:作导入数据使用,一般的语法也是import from filename of filetype insert colname into table where xx,其他方面和export一样。
- load: 作装入数据使用,语法较import要复杂一些,可以参考db2文档。
详细的可以参考这篇文章DB2数据的导入(Import)导出(Export)(Load)

简单的介绍了语法,回到我们的重点来,如何使用特殊符号`|`来做字段分割符导出数据呢?

首先我们可以看到db2提供了charsel来作为字段分割符,但这只能使用单字符来做分隔符,可`|`是一个字符串,不能这样做,我的做法是,在查询语句中先做预处理,再导出就行了。由于一般是用在脚本里使用db2语句来处理的,这里贴上处理的思路。
1. 得到字段名
colnames = select colname from syscat.columns where tabname = '${tabname}' and tabschema = '${tabschema}' order by colno
2. 将字段名,由列转行,并用`|`来做分割符,保存在sh变量中
result = SELECT listagg(colname,`|`)C FROM ${colnames}
3. 使用export语句来导出数据
select ${result} as field from "${tabschema}.${tabname}" where xxx
由于md的显示问题,实际的代码和这里贴出的不一样,大家可以参考我github上的脚本:export_data.sh导出数据

这是导出的处理,导入可以反着来,处理思路是一样的,那就是如何消除特殊分割符。

DB2使用特殊分隔符处理数据相关推荐

  1. DB2中使用Excel文件数据转CSV格式后导入数据库

    Excel文件数据存入DB2数据库中 首先将Excel文件另存为CSV格式文件. 从CSV格式文件中迁移数据到DB2 目的: 从**.csv文件中迁移数据到DB2数据库中 语句: DB2 " ...

  2. Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类、split函数基于指定分隔符拆分数据列的内容为列表、使用len计算每个列表的长度

    Pandas处理dataframe的文本数据列:使用str属性获取数据列的字符串方法类.split函数基于指定分隔符拆分数据列的内容为列表.使用len计算每个列表的长度 目录

  3. Python pandas 读取文件——读取具有明显分隔符的数据

    关于这篇博文提到的所有函数都可以在 IO Tools (Text, CSV, HDF5, -) 找到. 首先我们来列举一下 pandas 处理文件的函数1: pd.read_csv(filepath) ...

  4. MSSQL·将一对多的数据合并为以指定分隔符的数据

    阅文时长 | 0.05分钟 字数统计 | 142.4字符 主要内容 | 1.引言&背景 2.Stuff函数语法&模拟场景 3.声明与参考资料 『MSSQL·将一对多的数据合并为以指定分 ...

  5. DB2可用于清空大量数据表的not logged initially

    DB2可用于清空大量数据表的not logged initially 如果我们需要经常对一个表进行批量插入.更新和删除操作,可以考虑在创建表的时候使用not logged initially特性.指定 ...

  6. DB2数据库取第一条数据

    DB2只取第一条数据 select * from table fetch first 1 rows only

  7. oracle 根据分隔符提取,oracle使用指定分隔符导出数据到文件

    最近有需求要导出一个专业的详单,用于倒入sqlserver系统,要求用分隔符隔开各字段.一开始准备用toad查询出来在save as,但发现表太多,要一张一张表盯着,而且由于详单数据量大,查询导出占用 ...

  8. db2怎么恢复误删除的数据_db2数据库被误删后 oracle数据库误删数据恢复

    db2用户删除后db2数据库无法再启动怎么回事? 创建实例时,DB2的命令和环境变量会在/home/db2inst1中生成一个sqllib文件夹,即整个实例 当实例用户生成 db2icrt-u db2 ...

  9. db2怎么恢复误删除的数据_DB2误删数据后的恢复方法实践

    1.在源库中使用以下语句生成重定向脚本: db2 "restore db dbname from /yourdbparth taken at timestamp into dbname re ...

最新文章

  1. 技术图文:如何理解C#的internal限制修饰符?
  2. php 实现查询百度排名,PHP实现获取百度top50的搜索排行关键字
  3. 【收藏】基于QGIS的Google Earth Engine插件已发布
  4. 机器学习与流体动力学:谷歌AI利用「ML+TPU」实现流体模拟数量级加速
  5. java 反射 私有成员_Java对类私有变量的暴力反射技术讲解
  6. MySQL分组函数和distinct搭配使用
  7. SAP Fiori Elements edit按钮的ABAP端实现细节
  8. 批量读写变换图片(转)
  9. Ftrace Kernel Hooks: More than just tracing
  10. linux下的C语言开发(多线程编程)
  11. python代码示例-总算知道python入门代码示例
  12. Spring Framework的核心:Spring AOP
  13. Android Studio couldn‘t generate bytecode view, no .class file found
  14. SQL 获取当前日期上一个月的日期
  15. Axure RP 8.0激活码 Mac Windows
  16. 神经网络训练样本的标签,训练图像识别神经网络
  17. 一步步看α-β剪枝算法
  18. 【C语言】定义一个函数,求长方体的体积
  19. pytorch中的contiguous
  20. 对公司的选择和个人职业发展规划的一些想法

热门文章

  1. Keil(MDK-ARM)系列教程(八)_在线调试(Ⅰ)
  2. C++实现基于区块链的物流信息存储系统
  3. 【编程题】判断一个多边形是否为凸多边形
  4. 【0091】【创建postgres后端进程】PostgreSQL如何接收并处理客户端的socket请求(4)?
  5. 单片机之时钟工作原理
  6. CANOpen SDO
  7. 重型音乐金属核后期分轨混音教程教学培训(基础+进阶+重型音色调音指南+剪辑+修音+美感设计+实战+母带处理)|MZD Studios
  8. centos 系统下查看时间时区以及修改
  9. 唇语识别!AI 领域的下一个万亿市场?
  10. 微信小程序的左右布局