0

我的任务是将表的数据导出到平面文件。我编写了一个 shell 脚本来做同样的事情。这里的问题是在第一列值之后,即 310,光标不会逐个空格移动,我认为它需要一个“制表符”。它会跳到某个位置。我无法理解这一点。您能否通过删除标签并将其作为空格来帮助我解决这个问题。

trimspool ON 或 Linesize 是否导致问题?

310  LIFRZONAAC 0000000 0000003
310  LIIPACCCLA 0000000 0000000
310  LIIPACREPL 0000000 0000000
310  LIIPANRDSI 0000000 0000000
310  LIIPAXNAD  0000000 0000000
310  LIIPBNRDSI 0000000 0000000
310  LIIPCAUDIP 0000000 0000000
310  LIIPCAUDMU 0000000 0000000

==================================================== ====================================

我的控制文件和shell脚本如下。

控制文件::

LOAD DATA CHARACTERSET WE8ISO8859P1 

APPEND
PRESERVE BLANKS
INTO TABLE "MNCABEA1"
APPEND
(
SERVICIO              CHAR(9),
FAMILIA_COMPONENTE    CHAR(4),
PARAMETRO             CHAR(7),
CO_CABECERA_SC        CHAR(8),
CO_CABECERA_CARACT    CHAR(7)
)

==================================================== =================================== Shell脚本::

cat<<ENDMNCABEA1 >MNCABEA1.sql
set head off
set feed off
set pagesize 0
set trimspool on
set linesize 500

SELECT SERVICIO||FAMILIA_COMPONENTE||PARAMETRO||DECODE(CO_CABECERA_SC,'        ',REPLACE(CO_CABECERA_SC,' ','0'),LPAD(LTRIM(CO_CABECERA_SC),8,'0'))||DECODE(CO_CABECERA_CARACT,'       ',REPLACE(CO_CABECERA_CARACT,' ','0'),LPAD(LTRIM(CO_CABECERA_CARACT),7,'0')) FROM MNCABEA1;

exit
ENDMNCABEA1

sqlplus -s $USUADM@$ORACLE_SID @MNCABEA1.sql > /var/opt/aat/shr/mn/par/ext/salida/MNCABEA1_TEST
4

1 回答 1

0

你还需要set tab off;请参阅文档。您可能还希望set trimout off避免在行上出现尾随空格;因为你没有做 a spoolset trimspool可能没有做任何事情。

于 2012-07-17T09:37:29.960 回答