0

テーブルのデータをフラットファイルにエクスポートするタスクがあります。同じことを行うためのシェルスクリプトを作成しました。ここでの問題は、最初の列の値、つまり310の後で、カーソルがスペースごとに移動しないことです。これには「タブ」が必要だと思います。特定の位置にジャンプします。私はこれを理解することができません。タブを削除してスペースとして使用することで、これを解決するのを手伝っていただけませんか。

トリムスプールがオンまたはラインサイズが問題の原因ですか?

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

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

私の制御ファイルとシェルスクリプトは以下の通りです。

制御ファイル::

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)
)

================================================== ==================================シェルスクリプト::

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また、行に末尾のスペースがないようにすることもできます。あなたは何もしていないのでspoolset trimspoolおそらく何もしていません。

于 2012-07-17T09:37:29.960 に答える