spool导数处理数据格式&空格问题

本文介绍了在使用Oracle Spool导出数据时遇到的科学计数法、小数位数丢失及字段间空格过多的问题。通过使用`to_char`函数转换数据格式和结合`replace`函数去除空格来解决。对于大量字段的表,提供了一个自动生成SQL脚本的方法,避免手动编写。同时,针对SQL语句过长导致的错误,提出了分段拼接的解决策略。
摘要由CSDN通过智能技术生成

最近使用spool导数,出现导出的数据科学计数法、小数位数丢失、字段间补了很多空格,网上搜索了一圈采取的措施:

1.解决数据格式问题

使用to_char函数,例如to_char(num,‘9999.99’)

2.解决字段间空格问题

导出的查询sql字段间使用||加分隔符的方式连接起来,如

select COLUMN_NAME||'~'||DATA_TYPE||'~'||DATA_LENGTH||'~'||DATA_PRECISION||'~'||DATA_SCALE from user_tab_columns

实际使用的过程中,发现导出number型字段的时候,字段间还是自动补了空格,这个时候,可以在to_char函数外嵌套replace函数,去空格,例如:

select COLUMN_NAME||'~'||DATA_TYPE||'~'||replace(to_char(DATA_LENGTH,'99999'),' ','')||'~'||DATA_PRECISION||'~'||DATA_SCALE from user_tab_columns

如果表字段比较少,需要处理的表也少的话,我们可以直接把导出的sql写好;表字段超多,需要处理的表也多的话,再手写就比较麻烦了,下面介绍一个我自己写的一个只要获取到表名,就能按照格式使用约定的分隔符导出的例子。

1.首先我们通过user_tab_columns表,查询表的字段名、字段类型、字段长度等信息,这边要注意,表名要大写

value1=`sqlplus -S "${orauser}/${orapasswd}@${sid}" << !
  set heading off 
  set feedback off
  set pagesize 0
  set verify off
  set echo off
  set linesize 2000
  set sqlblanklines on
  select COLUMN_NAME||'~'||DATA_TYPE|
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值