PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ergebnisse aus Script ausgeben lassen



Onemahutu
08-06-2005, 08:19
Hallo,

ich habe ein Unix-Script, welches täglich Daten von einer Tabelle in eine andere schreibt.
Nun möchte ich die Datensätze, die er per INSERT einfügt, mir seperat in einer Logfile ausgeben lassen.
Kann mir jemand helfen wie?

Danke für eure Hilfe.


Schönen Gruß

One

michael.sprick
08-06-2005, 08:36
Ganz bestimmt - nur müsstest Du uns noch sagen in welcher Sprache das Skript geschrieben ist und am besten auch gleich ein paar Zeilen um das INSERT posten....

Onemahutu
08-06-2005, 09:00
Sorry,

das Unix-Shell-Script (ksh) lässt das INSERT Statement laufen,
dass folgendermaßen aufgebaut ist (stark gekürzt):




WHENEVER SQLERROR EXIT 2 ROLLBACK

set echo on
define RC_FILE=&1

spool copy_daten.lst

set time on
set timing on


--------------------------------------------------------------------------
INSERT INTO TB_1
(SATZ1,
SATZ2,
SATZ3,
SATZ4
)
SELECT
SATZ1,
SATZ2,
SATZ3,
SATZ4

FROM TB_2;
commit;

--------------------------------------------------------------------------

set head off
set feedback off
set pages 0
set time off
set timing off
set echo off
set SQLPROMPT ""

set timing on
set SQLPROMPT SQL>

-- returncode auf file schreiben
set heading off
set time off
set timing off
set echo off
spool off
spool &RC_FILE.
select 'export SQL_RETURNCODE=0' from dual ;
spool off
exit



Bin für jede Idee dankbar..........!

michael.sprick
08-06-2005, 09:30
_das_ ist kein ksh Skript - das sieht eher nach Oracle SQL Plus aus...

durch das


spool copy_daten.lst


hast Du ja schonmal die Datei definiert, in der die Ergebnisse der SQL Selects gespeichert werden.
Da Du aber nur Daten rüberkopierst und keine selektierst, wird da auch relativ wenig drin stehen.
Nachdem Du aber eh die komplette Tabelle kopierst, mach doch vor dem INSERT einfach noch


SELECT SATZ1, SATZ2, SATZ3, SATZ4 FROM TB_2;


Dann sollte all das, was in TB_2 steht, und hinterher nach TB_1 rüberkopiert wird, vorher einmal ausgegeben werden...

Wenn Du das einzeln für jeden Datensatz machen willst, müsstest Du entweder ein PL/SQL Skript schreiben, oder z.B. ein Perl Skript, was selektiert und wieder einfügt.

Onemahutu
08-06-2005, 09:39
Danke für die schnelle Hilfe. :)
Ich hatte auch nicht gemeint, dass es ein Shell-Script ist.
Ich habe mich wahrscheinlich schlecht ausgedrückt.
Sorry :o
Was ich meine ist, das dass SHELL-Script die Datei
copy_daten.sql AUFRUFT
die ich oben beschrieben habe.