[LINUX] So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv

Über sqlldr

Das Dienstprogramm sqlldr von Oracle wird zum Laden von Dateien in Tabellen verwendet sqlldr gibt den folgenden Fortschritt an die Standardausgabe aus, sodass Sie den Ausführungsstatus überprüfen können. Wenn jedoch die Anzahl der Lasten groß ist, ist es nicht möglich zu wissen, wie lange es dauern wird, bis die Ladung fertig ist.

SQL*Loader: Release 12.1.0.2.0 -Produktion am Do 23. Januar 14:36:14 2020

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

Pfad verwenden:Konventioneller Typ
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 64
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 128
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 192
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 256
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 320
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 384
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 448
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 512
Sie haben den Festschreibungspunkt erreicht.-Anzahl der logischen Datensätze 576

Also fragte ich mich, ob ich den Ausführungsstatus mit dem Linux-Befehl pv überwachen könnte.

Über den Befehl pv

Der Pv-Befehl ist unter Linux verfügbar Der Befehl pv ist ein praktisches Tool, das zwischen Piping-Befehlen ausgeführt werden kann und den aktuellen Status und die geschätzte Zeit bis zur Fertigstellung aus der Gesamtdatenmenge und der durch die Pipe übertragenen Datenmenge anzeigt.

Zum Beispiel, wenn Sie eine große Datei mit dem Befehl gzip komprimieren möchten

$ gzip bigfile

Erstellt eine komprimierte bigfile.gz Während der Ausführung wird jedoch keine Nachricht ausgegeben, sodass ich nicht weiß, wann sie enden wird.

Verwenden Sie also den Befehl pv,

$ pv bigfile | gzip -c > bigfile.gz

Wenn Sie ausführen

$ pv bigfile | gzip -c > bigfile.gz
129MB 0:00:15 [92.8MB/s] [===========>                       ] 36% ETA 0:00:31

Der Gesamtbetrag, die verstrichene Zeit, die verstrichene Menge pro Sekunde, der aktuelle Ausführungsstatus (Messgerät und%) und die verbleibende Zeit werden als angezeigt

Wie Sie sehen können, ist pv sehr praktisch, überwacht jedoch die Datenmenge, die durch die Pipe geleitet wird, sodass nur das durch die Pipe verbundene Befehlsformat unterstützt wird.

Verbinden Sie sqlldr und pv

Wie bereits erwähnt, schreibt sqlldr derzeit in die Standardausgabe, wie viele Ladevorgänge geladen wurden. Wenn nur diese Anzahl von Fällen herausgenommen und per Pipe an pv weitergeleitet werden kann, ist es ganz so.

Die Anzahl der Datensätze ist ausreichend, nicht die Anzahl der zu ladenden Bytes, solange Sie den Ausführungsstatus kennen. Erstellen wir also ein Shell-Skript, das eine einfache awk ausführt, die Standardausgabe von sqlldr liest und die Anzahl der Zeichen ausgibt, die der Anzahl der Fälle entspricht.

loadcount


#!/bin/bash
awk -F'Nummer' '
BEGIN { SV = 0; }
NF==2{
    for (i = 0; i < $2 - SV; i++) {
        printf("1");
    }
    SV = $2;
}'

Dieses Skript muss ausführbar sein. Geben Sie ihm daher die Ausführungsberechtigung, nachdem Sie es im Editor gespeichert haben

$ chmod +x loadcount

Der Verarbeitungsinhalt ist wie folgt -Wenn die Anzahl der Felder (NF) 2 (= xxx Nummer JJJ) mit der Zeichenfolge "Nummer" als Trennzeichen ist, wird die "Nummer" Extrahieren Sie die letzte Zeichenfolge ($ 2) -Das 1-Byte-Zeichen "1" wird für die Anzahl der Unterschiede zur Anzahl der zuletzt abgerufenen Elemente ausgegeben. Mit anderen Worten, wenn sqlldr 1000 Datensätze lädt, werden 1000 "1" ausgegeben.

Wenn die Eingabe eine Pipe ist, kennt der Befehl pv den Gesamtbetrag nicht. In diesem Fall können Sie den Gesamtbetrag mit der Option -s angeben. In diesem Fall entspricht der Gesamtbetrag der Anzahl der Datensätze in der zu ladenden Datei. Die Anzahl der Datensätze (Anzahl der Zeilen) kann mit dem Befehl wc ermittelt werden.

$ wc -l Dateiname

Die endgültige Form ist wie folgt

$ sqlldr USER/PASS@SID control=t1.ctl | ./loadcount | pv -p -t -e -s `cat t1.csv|wc -l` > /dev/null
0:00:20 [========>                                            ] 17% ETA 0:01:33

-USER / PASS @ SID ist ein Deskriptor für die Verbindung zu Oracle -T1.ctl ist eine Eingabesteuerungsdatei für sqlldr -T1.csv ist die zu ladende Datendatei

Ich konnte den Ausführungsstatus von sqlldr erfolgreich überwachen

Recommended Posts

So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
So löschen Sie die angegebene Zeichenfolge mit dem Befehl sed! !! !!
Überprüfen Sie den Speicherstatus des Servers mit dem Befehl Linux free
Überprüfen Sie den Betriebsstatus des Servers mit dem Linux-Befehl top
Übergeben des Ausführungsergebnisses eines Shell-Befehls in einer Liste in Python (nicht blockierende Version)
[sh] Das Speichern der Befehlsausführung führt zu Variablen
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
[EC2] So installieren Sie Chrome und den Inhalt jedes Befehls
So überprüfen Sie die Version von Django
[Linux] Verwendung des Befehls echo
Berechnen Verwenden Sie% des Befehls df
Verwendung des CUT-Befehls (mit Beispiel)
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
So ermitteln Sie die Anzahl der CPUs ohne den Befehl sar
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
[Bilderkennung] Lesen des Ergebnisses der automatischen Annotation mit VoTT
So finden Sie den Bereich des Boronoi-Diagramms
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
So testen Sie den Friends-of-Friends-Algorithmus mit pyfof
So legen Sie Attribute mit Mock of Python fest
So implementieren Sie "named_scope" von RubyOnRails mit Django
So messen Sie die Ausführungszeit mit Python Teil 1
Wie man Kaldi mit JUST Corpus trainiert
Von der Einführung von Pyethapp bis zur Vertragsabwicklung
So messen Sie die Ausführungszeit mit Python Part 2
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
Checkliste, wie Sie vermeiden können, die Elemente des Numpy-Arrays mit for zu drehen
Hinweis: So erhalten Sie den letzten Tag des Monats mit Python (hinzugefügt am ersten Tag des Monats)
Die Geschichte von soracom_exporter (Ich habe versucht, SORACOM Air mit Prometheus zu überwachen)
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
So kehren Sie aus dem Zustand zum Befehl zurück, in dem Sie mit Python of Git Bash nicht in den interaktiven Modus wechseln können
Wie man die Portnummer des xinetd-Dienstes kennt
So schreiben Sie eine GUI mit dem Befehl maya
So ermitteln Sie die Anzahl der Stellen in Python
Ich möchte das Ausführungsergebnis von strace erfassen
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
So starten Sie in Atom geschriebenen Code mit einem Befehl, ohne teminal zu starten
Erste Schritte mit Visual Studio Online ~ Das Ende der Ära der Umgebungskonstruktion ~
Linux-Benutzer hinzufügen, wie der Befehl useradd verwendet wird
So geben Sie die CSV eines mehrzeiligen Headers mit Pandas aus
Verwendung des Befehls grep und häufiger Samples
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
[Blender] So legen Sie die Auswahlelemente von EnumProperty dynamisch fest
Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
Ableiten der MAP-Schätzung von HMM mit PyStruct
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
Ableiten der MAP-Schätzung von HMM mit OpenGM
Wie man das Dokument der magischen Funktion (Linienmagie) trifft
So greifen Sie auf die globale Variable des importierten Moduls zu
Ein Memo darüber, wie man das schwierige Problem der Erfassung von FX mit AI überwinden kann
[Python] So schreiben Sie den Tabellenstil mit python-pptx um [python-pptx]
Holen Sie sich mit Python den Betriebsstatus von JR West
So zählen Sie die Anzahl der Vorkommen jedes Elements in der Liste in Python mit der Gewichtung
Visualisieren Sie mit OpenCV den Wertschätzungsstatus von Kunstwerken
Wie man strukturiertes SVM von ChainCRF mit PyStruct lernt
(Denken Sie schnell daran) Verwendung der LINUX-Befehlszeile
linux / c> link> Ruft das Ausführungsergebnis des Shell-Befehls im C-Programm ab.> Mir wurde beigebracht, wie man popen () verwendet.