2016-10-21 3 views
-2

Ich bin neu in der Programmierwelt. Ich habe ein SQL-Skript, das automatisiert werden muss. Die Automatisierung erforderlich ist, wie folgt:SQL-Skript automatisieren

1) Script sollte jeden Sonntag laufen

2) Dump automatisch die Ergebnisse in zu DUMP_YYYYMMDDHH24MISS.txt

3) gesetzt Ergebnis ist tar gziped

4) Upload auf SFTP URL mit dem angegebenen Benutzernamen und Passwort.

Ich verwende: UNIX, Vertica DB

Kann hier die Gurus bitte helfen?

+4

Was haben Sie bereits versucht und was war das Ergebnis? –

+0

Für (3): für i in 'ls * .txt';/usr/bin/gzip $ i; done Für (4): sftp UNAME @ IPADRESSE sftp> mput .gz Noch kein Glück bei (1) und (2), schätzen alle Hinweise, die Sie mir Anweisungen geben können, wie ich ein Anfänger bin - 1. Tag bei der Programmierung :) –

+0

Das ist ziemlich breit. Die kurze Antwort lautet: Schreiben Sie ein Shell-Skript, das 'vsql' aufruft, um eine Verbindung herzustellen und sql auszuführen. Verwenden Sie Parameter wie '\ o', um sql in eine Datei auszugeben, und' \ a', um nicht ausgerichtete Daten und '\ t' nur für Tupel zu setzen. Verwenden Sie 'gzip' und/oder' tar' und scp oder sftp client, um die Datei zu senden. Verwenden Sie 'cron', um es zu planen. Das ist nicht schwer, aber es sind viele verschiedene Stücke, wenn man sie nicht kennt.Beginnen Sie einfach mit vssql, um die Datei zu erstellen, und erstellen Sie dann ein Skript um sie herum. – woot

Antwort

1

Das ist wirklich 4 Fragen und sollte wahrscheinlich als solche gefragt werden. Zur Beantwortung obwohl im aktuellen Format:

1) Automatische Arbeitsplan - Crontab

Im Terminal, Typ crontab -e.

Wenn Sie bei 01.00 etwas jeden Sonntag wollen, fügen Sie die folgende Zeile:

0 1 * * * 0 /path/to/script/script.sh 

Dies wird das Skript jeden Sonntag ausführen.

2) die Ausgabe des Befehls Einstellung

Ich bin mit Orakel nur vertraut. Das Format ist wahrscheinlich ähnlich. Um den Dateinamen wie gewünscht zu erhalten, verwenden Sie die Datumsfunktion wie folgt. (Dies ist, wie ich es mit Oracle in tun würde):

d=$(date +%Y%M%D%H%M) 
var=$(sqlplus -s/as blahblahblah 
select * from stuff; 
exit 
EOF 
) 

file_name=DUMP_${d}MISS.txt 
echo "${var}" >> ${file_name} 

Beachten Sie, dass Ihr Befehl date wahrscheinlich anders ist, wenn Sie ein Mann auf Seite Datum tun wird es Ihnen sagen, welche Parameter Sie benötigen würde das bekommen Datum formatiert, wie Sie möchten.

3) Tarieren die Ausgabe

tar -xvf ${file_name} 

4) senden über SFTP Sie haben würde das SFTP zu authentifizieren, ist, dass über den Rahmen dessen, was jemand ohne weitere Details beantworten kann. Sobald Sie die Maschinen zur Authentifizierung eingerichtet haben, würden Sie tun:

+1

Vorsicht. Dieser Cron wird mehr als einmal jeden Sonntag ausführen. Du willst etwas mehr wie '0 1 * * 0', das jeden Sonntag zu einer bestimmten Zeit läuft. – woot

+0

Oh ja, duh. Ich habe nicht jeden Cron von so etwas haben müssen. Normalerweise wird der Wochentag Cron als begrenzender Faktor verwendet, nicht als ausführbarer Faktor. (Z. B. habe ich das immer gemacht, laufe das jeden Tag * außer Sonntag). Danke für den Fang. – mkingsbu

+1

Sorry es war immer noch nicht richtig. Ich habe es für dich geändert. Was du hattest, würde jede 1 Minute während der 1am Stunde am Sonntag ausführen. ;-) – woot