2016-06-16 5 views
0

Ist es möglich, eine gezippte Datei während des Herunterladens zu entzippen und sie in einem Rutsch an mysql zu füttern, ohne eine physische Datei erstellen zu müssen?Wie zu downloaden, zu entpacken und zu mysql Dump alle über Rohrleitungen importieren?

Bisher habe ich in der Lage gewesen, es zu entpacken und füttern MySQL die folgenden: -
gunzip < somefile.sql.gz | pv | mysql -u myself -p somedb #pv for viewing process

Der obige Prozess erwartet die gzip-Datei bereits heruntergeladen werden, während dem Entpacken und es zu mysql Fütterung. Aber ich konnte nicht zu mysql füttern, während es gleichzeitig entpackt und heruntergeladen wird.

Und wenn das nicht möglich ist, würde ich gerne wissen, warum auch, um einen Seelenfrieden zu bekommen.

+0

Sicher, schreibe eine c/java/C#/python was auch immer app, entpacken Sie in den Speicher. Ihre App wäre ein mysql-Client (via libs), und es macht Spaß, mit diesem Speicherblock auf dem Server zu arbeiten, was immer Sie wollen. – Drew

+0

Sie können es unter UNIX/Linux ziemlich einfach tun, indem Sie Named Pipes verwenden. http://www.linuxjournal.com/article/2156 ist eine einfache Erklärung. –

+0

@Drew Sorry, ich hätte erwähnen sollen, dass ich wollte, dass es von der Shell ausgeht. Ich werde als solche markieren, um keine Verwirrungen zu verursachen. – shriek

Antwort

0

Okay, ich habe herausgefunden. Danke an @TGray, dass er mich in die richtige Richtung weist. Der Schlüssel war named pipes. Im Grunde genommen erstellen Sie eine Named Pipe und starten den Download auf den Named Pipes, während Sie Piping mit dem Namen Pipe zu Gunzip starten, wie oben in meinem Post gezeigt.

1
wget -qO- URL | gunzip | pv | mysql -u myself -p somedb 
+0

Ich war ** nur ** auf der Suche nach etwas ähnlichem. Vielen Dank! –

+0

Ich glaube nicht, dass das für 'ssh' funktioniert. – shriek