J'ai un grand .sql
fichier plein de SELECT
instructions contenant des données que je souhaite insérer dans ma base de données SQL Server. Je cherche comment je pourrais essentiellement prendre le contenu du fichier, 100 lignes à la fois, et le transmettre aux commandes que j'ai définies pour faire le reste.
En gros, je cherche split
qui sortira sur stdout
, pas des fichiers.
J'utilise également CygWin sous Windows, donc je n'ai pas accès à la suite complète d'outils.
Réponse acceptée :
Je pense que la façon la plus simple de le faire est :
while IFS= read -r line; do
{ printf '%sn' "$line"; head -n 99; } |
other_commands
done <database_file
Vous devez utiliser read
pour la première ligne de chaque section car il semble n'y avoir aucun autre moyen de s'arrêter lorsque la fin du fichier est atteinte. Pour plus d'informations, consultez :
- Vérifiez si le canal est vide et exécutez une commande sur les données si ce n'est pas le cas
- Comment canaliser la sortie d'un processus à un autre, mais ne s'exécuter que si le premier a une sortie ?