【问题标题】:spool text file content wrapping unexpectedly假脱机文本文件内容意外换行
【发布时间】:2013-05-08 17:51:37
【问题描述】:

我生成了一个动态假脱机文本并将它们存储在一个表中。然后我使用文件 A 假脱机文本以创建 dynamic_spool_script.sql。在 dynamic_spool_script.sql 中,当我运行 dynamic_spool_script.sql 时,随机行的第 50 和第 60 个字符之间出现意外换行,导致 sybtax 错误。在我的原文中,没有一行超过 100 个字符。我正在使用 oracle 11g。

任何建议/帮助将不胜感激。


编辑:对于包装的文件名,我在 plsql 中使用变量创建了文本。然后我将不同的文本变量连接起来,并将最终的文本存储在 CLOB 类型的表列中。

v_file_name VARCHAR2(200);
v_file_name := 'spool "'||v_out_path||'/'||v_dynamic_name||
'_rest_of_file_name_'||TO_CHAR(v_batch_date,'YYYYMMDD')||'.csv"'||chr(10)||chr(10);

我可以从表中复制文本并直接在sql plus中运行。这足以验证没有意外的新行或控制字符吗?只是当我将表格中的文本假脱机到文件时,会出现换行问题。


编辑结束

******文件 A 开始***
set linesize 100
set pagesize 0
set long 200000
set echo off
set heading off
set term off
set time off
set feedback off
set timing off

column spool_file format a100

spool &1/dynamic_spool_script.sql
select * from dynamic_spool_text;
spool off;
********文件结束**********

*******dynamic_spool_script.sql START***强>

一些文字....
spool "/file_path/File_name_not_more_than_100C #####很多空间#####
_YYYYMMDD.csv"
一些文字....

*********dynamic_spool_script.sql START* **

【问题讨论】:

    标签: sql oracle plsql spool


    【解决方案1】:

    你可以试试

    SET TRIMSPOOL ON 
    -- TRIMSPOOL = ON will remove trailing spaces from spooled output
    

    这也有助于增加线条大小。

    您是否检查过记录中没有换行符?如果是这种情况,您可能必须删除它们。

    【讨论】:

    • 使用 regexp_replace(my_string,'[[:cntrl:]]','') 删除非打印控制代码会有所帮助。 (未选中语法)
    猜你喜欢
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2016-12-27
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多