oracle – 在sqlplus中假脱机csv文件时的标头格式
发布时间:2020-12-12 16:24:03 所属栏目:百科 来源:网络整理
导读:我需要使用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
我需要使用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||'","'||ADVTX_VEH_WT||'"' "TRANSPORT INC","113","00000000","25-JAN-13 10.17.51 AM","" "TRANSPORT INC","1905","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打破它们.我真的很感激任何建议,甚至完全不同于我的方法 – 我是学习的程序员. 一个只有一个标题的csv的简单方法就是这样做set embedded on set pagesize 0 set colsep '|' set echo off set feedback off set linesize 1000 set trimspool on set headsep off 嵌入式是一个隐藏的选项,但重要的是只有一个标头 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |