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?
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%Der einfache Weg und schon getestet ist:
%Vor%Ich hoffe, das wird helfen
Tags und Links mysql powershell