我正在制作一个PS脚本,调用sql*plus脚本,然后通过邮件发送文件。
但问题是CSV中导出的结果在最后一列被截断,因为它是一个xml,并且每个标记之间有一个换行符
在Oracle SQL上,结果在一行中。
在csv中,只有这些选项:
SET lines 2500;
SET pages 1;
在'info'列的spool文件的输出如下所示:
'<?xml version='1.0' encoding='UTF-8'?>
<error_response>
<id>8cad0277-3a60-4cfd-a9c4-c272f69038ce</id>
<timestamp>2023-03-23T09:25:03.001Z</timestamp>
<error_lang>EN</error_lang>
<error_type>MULE:UNKNOWN</error_type>
<error_code>520</error_code>
<error_msg>
现在我想要的是所有的东西都在一条线上
我已经尝试了几件事,但它截断它的520 - '<?xml version='1.0' encoding='UTF-8'?>
以下是我尝试过的所有事情:
SET Wrap OFF;
SET Longchunksize 90000;
SET Pagesize 0;
SET lin[esize] 5000;
SET TrimSpool ON;
SET long 2000000;
SET lines 32737;
column info format a120
没有工作仍然得到截断到520 xml我怎么能得到所有的数据包含在信息列?
1条答案
按热度按时间qij5mzcb1#
换行符在您的数据中,SQL*Plus不会添加它们。你需要用一些不能出现在数据中的特殊字符来替换换行符,然后一旦你把数据送到它的最终目的地,用换行符来替换它们以恢复格式化的外观。
我喜欢使用没人见过的非打印控制字符:
浸提后:
最终目的地:
同时确保你设置的线宽很大,你已经有了。