mknod /tmp/oracle.pipe p
sqlplus / as sysdba << _EOF
set escape on
host nohup gzip -c < /tmp/oracle.pipe > /tmp/out1.gz \&
spool /tmp/oracle.pipe
select * from employee;
spool off
_EOF
rm /tmp/oracle.pip
Ich muss einen Trailer am Ende der komprimierten Datei out1.gz einfügen, ich kann die Zeilen mit zählen
count=zcat out1.gz |wc -l
Wie setze ich den Anhänger ein?
T5 (assuming count=5)
Am Ende von out1.gz ohne es zu entpacken.
count=zcat out1.gz |wc -l
wird nicht funktionieren, du brauchst so etwas wiecount=$(zcat out1.gz |wc -l)
; ii)zcat
wird Entpacken Sie die Datei, wenn Sie bereit sind , das zu tun, warum Sie nicht zu unzip wan? iii) Warum zählst du nicht die Zeilen und fügst die Zahl hinzu, bevor du die Datei überhaupt komprimierst?Antworten:
Aus können
man gzip
Sie lesen, dassgzip
ped-Dateien einfach verkettet werden können:Dies kann auch
cat
für diegzip
ped-Dateien erfolgen, z.Gehen Sie wie folgt vor, um auf eine externe Datei zu verzichten, die angehängt werden soll:
quelle
gzip
funktioniert und ob etwas beschädigt werden könnte. Bisher waren einige Textdateien, die ich ausprobiert habe, in Ordnung.Wie groß ist Ihr Mitarbeitertisch? Wenn Sie nicht eine Million Mitarbeiter haben und jeder Datensatz Tausende von Bytes benötigt, lohnt es sich wahrscheinlich nicht einmal, die Ausgabe zu komprimieren.
Es lohnt sich mit ziemlicher Sicherheit nicht, sie zu komprimieren, während die Ausgabedatei erstellt wird. Warum also nicht einfach in unkomprimierten Nur-Text ausgeben, ausführen
count=$(wc -l out1) ; echo "T$count" >> out1
und dann komprimierengzip out1
?Alternativ können Sie auch eine Variation von
select count(*) from employee
vor demspool off
Befehl ausführen .quelle
Ich hatte mit einer ähnlichen Herausforderung zu kämpfen: ein paar Zeilen an einen komprimierten SQL-Dump anzuhängen. Meine Lösung basierte auf der Antwort von @Fiximan
quelle