假脱机文本文件内容包装意外

时间:2013-05-03 04:24:49

标签: sql oracle plsql spool

我生成了一个动态假脱机文本并将它们存储在一个表中。然后我使用文件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;
* ** * ** * * 文件A结束 * ** * ** * ** *

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

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

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

1 个答案:

答案 0 :(得分:2)

你可以尝试

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

它也可以帮助增加线条。

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