问题描述
大家好,
这是第一次发邮件。
我们在19c中遇到了一个问题,当生成一个csv文件。
在12c中,结果与预期一致。
空格将添加在列内容之后或之前。
请查收附件中有关环境的信息。
--表结构
列名类型TABLE
--------------------------------------------
代码_允许EEULL字符(六)出口。inv_池_prod_tmp
HITTO_日期_VALORISING编号(6) GP2PROD.gestion_valoration
--转换日期函数
--脚本
--如您所见,在第一列中添加值之后,在第二列中添加值之前。
100801;2014年12月31日
100804;2014年12月31日
100805;2014年12月31日
100806;2014年12月31日
100809;2014年12月31日
100810;2014年12月31日
100811;2016年6月14日
100812;2016年6月14日
100813;2016年6月14日
100814;2016年6月14日
100815;2016年6月30日
100816;2016年6月30日
100817;2017年6月1日
126401;2017年11月10日
提前感谢您的答复。
这是第一次发邮件。
我们在19c中遇到了一个问题,当生成一个csv文件。
在12c中,结果与预期一致。
空格将添加在列内容之后或之前。
请查收附件中有关环境的信息。
--表结构
列名类型TABLE
--------------------------------------------
代码_允许EEULL字符(六)出口。inv_池_prod_tmp
HITTO_日期_VALORISING编号(6) GP2PROD.gestion_valoration
--转换日期函数
CREATE FUNCTION "GP2PROD"."CONVERTION_DATE" (cd_date number) return date is cd_date2 date; BEGIN cd_date2 := TO_DATE('14/09/1752','DD/MM/YYYY') + abs(cd_date); return (cd_date2); END;复制
--脚本
set heading off pagesize 0 linesize 0 set TRIMSPOOL ON set RECSEP off set verify off CREATE TABLE inv_pool_prod_tmp as select distinct dp.code_portefeuille from descriptif_comp_portefeuille dcp, descriptif_portefeuille dp, contenu_ensemble_port cep where dcp.flag_pool <> ' ' and dcp.code_portefeuille = dp.code_portefeuille and dp.objectif_portefeuille <> ' ' and cep.code_portefeuille =dp.code_portefeuille and cep.code_ensemble_port <> 'OPCLIQ' group by dp.code_portefeuille order by dp.code_portefeuille; spool $GPFETAT/ctrl_nbr_pool_prod.csv select B.CODE_PORTEFEUILLE, ';', convertion_date(max(B.HISTO_DATE_VALORISATION)) as premiere_valo from inv_pool_prod_tmp a, gestion_valorisation b where a.code_portefeuille = b.code_portefeuille group by b.code_portefeuille order by b.code_portefeuille; spool off; quit;复制
--如您所见,在第一列中添加值之后,在第二列中添加值之前。
more ctrl_nbr_pool_prod.csv复制
100801;2014年12月31日
100804;2014年12月31日
100805;2014年12月31日
100806;2014年12月31日
100809;2014年12月31日
100810;2014年12月31日
100811;2016年6月14日
100812;2016年6月14日
100813;2016年6月14日
100814;2016年6月14日
100815;2016年6月30日
100816;2016年6月30日
100817;2017年6月1日
126401;2017年11月10日
提前感谢您的答复。
专家解答
这将取决于您的客户端的格式设置。但不管原因是什么,现在有更好的方法来处理分隔数据。
SQL*Plus和SQLcl都支持将结果作为分隔文本返回。只需将适当的设置添加到脚本
SQL*Plus
你想要set markup csv命令:
SQLcl/SQL Developer
使用set sqlformat delimited选项:
在进行此操作时,请确保您同时:
-设置会话的NLS_date_格式
- TO_CHAR输出中的任何日期/时间戳列
否则,如果您在另一台机器上运行脚本,您就会面临日期更改格式的风险!
SQL*Plus和SQLcl都支持将结果作为分隔文本返回。只需将适当的设置添加到脚本
SQL*Plus
你想要set markup csv命令:
SQL> set markup csv on delimiter ; quote on SQL> set heading off pagesize 0 linesize 1 SQL> set trimspool on SQL> set verify off SQL> SQL> select codep, cvdate(datev) as p 2 from test; "100801";"31-DEC-14" "100804";"31-DEC-14" "100805";"31-DEC-14" "100806";"31-DEC-14" "100809";"31-DEC-14" "100810";"31-DEC-14" "100811";"14-JUN-16" "100812";"14-JUN-16" "100813";"14-JUN-16" "100814";"14-JUN-16"复制
SQLcl/SQL Developer
使用set sqlformat delimited选项:
SQL> set sqlformat delimited ; " " SQL> set heading off pagesize 0 linesize 1 SQL> set trimspool on SQL> set verify off SQL> SQL> SELECT codep, cvdate(datev) as p 2 from test; "100801";31-DEC-14 "100804";31-DEC-14 "100805";31-DEC-14 "100806";31-DEC-14 "100809";31-DEC-14 "100810";31-DEC-14 "100811";14-JUN-16 "100812";14-JUN-16 "100813";14-JUN-16 "100814";14-JUN-16 10 rows selected.复制
在进行此操作时,请确保您同时:
-设置会话的NLS_date_格式
- TO_CHAR输出中的任何日期/时间戳列
否则,如果您在另一台机器上运行脚本,您就会面临日期更改格式的风险!
文章转载自askTom,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1155次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
704次阅读
2025-03-17 11:33:53
Oracle+Deepseek+Dify 实现数据库数据实时分析
bicewow
619次阅读
2025-03-06 09:41:49
【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
DarkAthena
516次阅读
2025-03-04 14:33:31
Oracle避坑指南|同名表导出难题:如何精准排除指定用户下的表?
szrsu
491次阅读
2025-03-05 00:42:34
Ogg23ai高手必看-MySQL Innodb Cluster跟oracle的亲密接触
曹海峰
426次阅读
2025-03-04 21:56:13
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
410次阅读
2025-03-13 14:38:19
【ORACLE】char类型和sql优化器发生的“错误”反应
DarkAthena
390次阅读
2025-03-04 23:05:01
什么,oracle 主机用户被删了?原来是虚惊一场!
Lucifer三思而后行
373次阅读
2025-03-03 21:12:09
Oracle RAC 数据文件添加成本存储的解决办法
ByteHouse
319次阅读
2025-02-26 16:40:50