Ich habe eine große .sql
Datei voller SELECT
Anweisungen, die Daten enthalten, die ich in meine SQL Server-Datenbank einfügen möchte. Ich suche nach einer Möglichkeit, den Inhalt der Datei zu nehmen, 100 Zeilen auf einmal, und ihn an die Befehle weiterzugeben, die ich festgelegt habe, um den Rest zu erledigen.
Grundsätzlich suche ich nach split
das wird nach stdout
ausgegeben , keine Dateien.
Ich verwende CygWin auch unter Windows, daher habe ich keinen Zugriff auf die vollständige Suite von Tools.
Akzeptierte Antwort:
Ich denke, der einfachste Weg, dies zu tun, ist:
while IFS= read -r line; do
{ printf '%sn' "$line"; head -n 99; } |
other_commands
done <database_file
Sie müssen read
verwenden für die erste Zeile in jedem Abschnitt, da es keine andere Möglichkeit zu geben scheint, anzuhalten, wenn das Ende der Datei erreicht ist. Weitere Informationen finden Sie unter:
- Überprüfen Sie, ob die Pipe leer ist, und führen Sie einen Befehl für die Daten aus, wenn dies nicht der Fall ist
- Wie kann ich die Ausgabe von einem Prozess an einen anderen weiterleiten, aber nur ausführen, wenn der erste eine Ausgabe hat?