Oracle创建假脱机文件,oracle – 在sqlplus中假脱机csv文件时的标头格式

我需要使用sqlplus从Oracle中的表中调整csv.以下是所需的格式:

"HOST_SITE_TX_ID","SITE_ID","SITETX_TX_ID","SITETX_HELP_ID"

"664436565","16","2195301","0"

"664700792","52","1099970","0"

以下是我写的shell脚本的相关部分:

sqlplus -s $sql_user/$sql_password@$sid << eof >> /dev/null

set feedback off

set term off

set linesize 1500

set pagesize 11000

--set colsep ,

--set colsep '","'

set trimspool on

set underline off

set heading on

--set headsep $

set newpage none

spool "$folder$filename$ext"

select '"'||PCL_CARRIER_NAME||'","'||SITETX_EQUIP_ID||'","'||SITETX_SITE_STAT||'","'||SITETX_CREATE_DATE||'","'||ADVTX_VEH_WT||'"'

from cvo_admin.MISSING_HOST_SITE_TX_IDS;

spool off

(我已经使用了一些注释声明来表示我尝试但无法工作的事情)

我收到的输出是:

'"'||PCL_CARRIER_NAME||'","'||SITETX_EQUIP_ID||'","'||SITETX_SITE_STAT||'","'||SITETX_CREATE_DATE||'","'||ADVTX_VEH_WT||'"'

"TRANSPORT INC","113","00000000","25-JAN-13 10.17.51 AM",""

"TRANSPORT INC","1905","00000000","25-JAN-13 05.06.44 PM","0"

这表明标题搞砸了 – 它实际上是打印应该被解释为sql语句的整个字符串,就像显示的数据一样.

我正在考虑的选项:

1)使用colsep

set colsep '","'

spool

select * from TABLE

spool off

这引入了其他问题,因为具有前导和尾随空格的数据,文件中的第一个和最后一个值不用引号括起来

HOST_SITE_TX_ID"," SITE_ID"

" 12345"," 16"

" 12345"," 21

我的结论是,这种方法比我之前描述的方法给了我更多的胃灼热.

2)获取文件并使用正则表达式修改标题.

3)完全保留标题并使用脚本手动在文件开头添加标题字符串

选项2更可行,但我仍然有兴趣询问,如果可能有更好的方法来格式化标题,所以它有一个常规的csv,(逗号分隔,双引号有界)格式.

我希望做尽可能少的硬编码 – 我导出的表有大约40列,我目前正在运行大约400万条记录的脚本 – 每批约10K打破它们.我真的很感激任何建议,甚至完全不同于我的方法 – 我是学习的程序员.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值