Shell取大文件某列的最大长度

您所在的位置:网站首页 shell提取某一列 Shell取大文件某列的最大长度

Shell取大文件某列的最大长度

#Shell取大文件某列的最大长度| 来源: 网络整理| 查看: 265

本篇博客没有什么技术难点,操作过程也没有繁度,主要是针对初学者,列举shell脚本编写过程中该注意的一些基本细节。Shell取大文件某列的最大长度Shell取大文件某列的最大长度Shell取大文件某列的最大长度Shell取大文件某列的最大长度Shell取大文件某列的最大长度Shell取大文件某列的最大长度Shell取大文件某列的最大长度Shell取大文件某列的最大长度Shell取大文件某列的最大长度Shell取大文件某列的最大长度

前提说明:单个数据文件1.2G,数据列以“@!@”作为分隔符,操作环境Unix,数据库Oracle 11,允许临时库更改,数据导入到临时库,字段为varchar类型

需求描述:将数据文件导入到数据库时,发现数据文件某列的宽度大于数据库定义的宽度,导进去报错(发现报错就立即停止导入),通过日志文件提示的宽度去更改数据库对应的宽度,这样不太现实,因为

  ①、数据文件很大,导入完成(报错情况下)需要很长时间,不可能等数据全部导完,然后去检索

      日志文件报错列的最大宽度;

  ②、日志文件本身就很大。

如果在数据导入时知道此列的最大宽度,这样就省下了一些不必要的麻烦。下面就是如何得到某列的最大宽度的两个方案:

一、估测法

    此方案比较笨,能解决问题但是毫无效率可言。先预计此列的最大宽度,这个宽度可以超出实际最大宽度,但是一定要足够大,修改好数据库和相关文件之后,将数据导入到数据库,然后通过sql查询数据最大宽度:

select max(length(customer_name)) from Tal;

然后truncate这张表的数据,修改好宽度后再重新导入。

二、检索数据文件法

    此方案对比方案一是一个比较聪明的办法,就是直接用Shell检索数据文件,得到报错列的最大宽度。

maxLen=1 

cat /exdata/FTP/FTP_FEM_SAVINGS_20130220_01.dat | tr "!" "@" |sed



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3