How to spool everything from a column in SQL

问题描述 投票:0回答:1

我正在制作一个调用 sql*plus 脚本的 PS 脚本,然后通过邮件发送文件。

然而问题是在 CSV 中导出的结果在最后一列被截断,因为它是一个 xml 并且每个标记之间有一个换行符

在 Oracle SQL 上,结果在一行中。

在只有这些作为选项的 csv 中:

SET lines 2500;
SET pages 1;

假脱机文件在“信息”列的输出如下所示:

'<?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 我怎样才能得到信息栏中包含的所有数据?

oracle sqlplus
1个回答
0
投票

换行符在您的数据中,SQL*Plus 没有添加它们。您需要用一些不能出现在您的数据中的特殊字符替换换行符,然后一旦您将数据到达其最终目的地,用换行符替换它们以恢复格式化的外观。

我喜欢使用没人见过的非打印控制字符:

提取后:

SELECT REPLACE(info,CHR(10),CHR(21)) info
  FROM ...

在最终目的地:

INSERT INTO target
SELECT REPLACE(info,CHR(21),CHR(10))
  FROM ...

还要确保你将 linesize 设置得非常大,你有。

© www.soinside.com 2019 - 2024. All rights reserved.