Frage

Ich habe Daten aus einigen Dateien zu lesen und die Daten in verschiedene Tabellen in einer Datenbank einzufügen. Ist Unix-Shell-Skript stark genug, um die Arbeit zu tun?

Ist es einfach, den Job in Shell-Skript zu tun, oder sollte ich gehen über das tun dies in Java?

War es hilfreich?

Lösung

Wenn die Daten, die Sie versuchen, in einem vernünftigen Format zu importieren - durch Komma getrennte, zum Beispiel - und Datenbankserver hat vernünftige Kommandozeilenprogramme, soll dies kein Problem sein. MySQL hat das „mysqlimport“ Kommandozeilen-Tool, das verschiedenes Argument beschreibt das Format der Datei akzeptieren:

mysqlimport \
    --fields-terminated-by=, \
    --ignore-lines=1 \
    --fields-optionally-enclosed-by='"' < datafile.txt

die Daten Passing durch perl / sed / awk Einzeiler kann helfen, es in dem richtigen Format bekommen, und der Shell-Skript für Dateinamen aufgefordert, Handhabung Argumente leicht umgehen kann, etc.

Mit den verschiedenen Kommandozeilen-Tool von Unix zur Verfügung gestellt ist der wesentliche Punkt der Bash Scripting. Perl, MySQL, etc. sind alle Teile dieses Toolkit.

Andere Tipps

ist es möglich: Arbeiten mit dem Unix-Shell-Skript, erzeugen einen SQL-Skript verwenden, cli in die Datenbank den SQL-Skript auszuführen.

, wenn die Menge an Informationen, die klein genug ist, dass Sie die SQL im Speicher aufbauen konnten ich davon abraten, obwohl da man nie weiß, was die Zukunft bringt (und es könnte sehr große Datenmenge sein). einen Anruf pro Anforderung mit ermöglicht es Ihnen nicht von Bulk-Operationen zu profitieren, die manchmal zur Verfügung stehen.

Natürlich kann man, vorausgesetzt, dass Sie eine Befehlszeile SQL-Client praktisch haben! Ich habe es getan w / Sybase und der isql Kommandozeilen-Client. Sie können sogar klug erhalten und Sachen durch awk senden und Skripte senden Befehle on the fly zu generieren. Es ist vielleicht nicht der effizienteste Weg sein, alles zu tun, aber es gibt viele Möglichkeiten Ihren Unix-Hacker mojo zu biegen.

Sie können, aber es könnte ein bisschen hässlich, zum Beispiel, wenn Sie MySQL verwenden und nehmen wir an Sie eine SQL-Zeichenfolge in $ sql gespeichert haben

echo $sql | mysql -u[user] -p[password] -h[host]

P. S. es könnte eine gute Idee sein, um uns zu sagen, was Datenbank, die Sie verwenden, damit wir mehr spezifische Hilfe anbieten: p

Bearbeiten: verändert die Beispielzeile so tatsächlich funktioniert es

Pipe ist dein Freund.

Zum Beispiel in MySQL:

echo 'load data infile /path/to/the/file into table table_name ...' | 
    mysql -u mysql_user_id -p 

sollte die Arbeit machen.

Sofern die Dateien irgendwie strukturiert z.B. Komma / Tab getrennt etc.

Für Einzelheiten lesen Sie das Handbuch für die Datenbank.

Es hängt von Ihrem Datenbank-Management-System. Die meisten von ihnen haben leistungsfähige Shell-Werkzeuge zum Importieren von Daten, tut auch einige ETL-Funktionen. Diese Instrumente könnten auch sehr performant sein, wenn sie Bulkbeladung unterstützen -. In der Regel Java JDBC nicht so leicht tun können,

Kann es jetzt nicht testen, aber so etwas wie:

echo "INSERT INTO foo (b,a,r) VALUES (1,2,3);" | 
    mysql -u user -psecret -h host database

in einem Shell-Skript funktionieren soll. Sie wissen nicht, über Daten immer aus ihm heraus, obwohl

Shell Scripting (Bash oder ähnliches) primäre Absicht ist nicht mit Datenbanken zu beschäftigen. Gehen Sie für Java oder noch besser, fahren diese Gelegenheit, die Grundlagen einer Skriptsprache wie Python oder Ruby zu lernen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top