Powershell-Pipe-Dateiinhalt in die Anwendung, ohne die Datei im Speicher zu laden

8

Mit cmd würde ich mysql -uroot database < filename.sql ausführen, um einen Datenbank-Dump zu importieren (aus der Datei lesen und an MySQL übergeben). % Co_de% ist jedoch in der Powershell "reserviert".

Stattdessen verwende ich in Powershell < . Der Vorbehalt ist, dass powershell get-content filename.sql | mysql -uroot database vollständig in den Speicher liest, bevor er es an MySQL weitergibt, und bei großen Datenbank-Dumps hat es einfach zu wenig Speicher.

Natürlich könnte ich dies über filename.sql ausführen, aber ich habe eine Handvoll Powershell-Skripte, die verschiedene Aufgaben wie diese automatisieren und ich möchte sie nicht alle im Batch neu schreiben müssen. In diesem speziellen Fall ist cmd eine Variable, die beim Start der Automatisierung über PS-Parameter angegeben wird.

Wie komme ich also zu dieser Speicherbeschränkung? Gibt es eine andere Möglichkeit, den Dateiinhalt direkt in MySQL zu pipen?

    
cbednarski 25.01.2011, 00:52
quelle

4 Antworten

12

Sie können versuchen

%Vor%

oder

%Vor%

Wenn die Dinge kompliziert werden, sollten Sie vielleicht eine C # -Konsolenanwendung schreiben, die die komplexen Aufgaben erledigt.

    
Tony 25.01.2011, 01:19
quelle
2

Nicht sicher, ob dies für Ihre Anwendung funktioniert oder nicht (es sollte die Datei in Blöcken von jeweils 1000 Datensätzen gleichzeitig und nicht auf einmal verarbeiten):

get-content Dateiname.sql -readcount 1000 |% {$ _ | mysql -uroot-Datenbank}

    
mjolinor 25.01.2011 01:26
quelle
0

Ich würde sagen, bleiben Sie bei großen Dateien von den Cmdlets fern. Ich habe etwas Ähnliches mit Dateien gemacht, die mehr als 30 Millionen Zeilen lang sind und kein Problem mit dem unten stehenden Code hatten. Es funktioniert sowohl bei der Geschwindigkeit als auch beim Speicherverbrauch sehr gut.

%Vor%     
Jeremy 27.04.2014 00:20
quelle
0

Der einfache Weg und schon getestet ist:

%Vor%

Ich hoffe, das wird helfen

    
datothepato 08.02.2018 13:50
quelle

Tags und Links