Home | Über den Autor | Impressum | .NET Developer Group Braunschweig | AX Solutions
kostenloser Counter
- Zabim
Aufgrund der besseren Wartbarkeit sind bei unseren Projekten die Datenbank-Skripte für die Entwickler in kleine Häppchen geteilt. Für Kunden benötigen wir aber natürlich nur ein Skript, das alle Änderungen in einer Datei zusammen fasst.
Da ich mich schon immer mal mit der Powershell beschäftigen wollte, dachte ich, das wäre mal eine gute Gelegenheit damit mal rumzuspielen.
Entstanden ist daraus das folgende Skript:
# -------------------------------# GenerateDatabaseUpdate.ps1# Author: Karim El Jed# -------------------------------# Mit diesem Skript können mehrere kleine Datenbankskripte zu einer Datei zusammengefasst werden.## PARAMETER:# -from Die Datenbankversion, die aktualisiert werden soll (immer in der Form "x.y" angeben!)## -to Die Datenbankversion auf die aktualisiert werden soll (immer in der Form "x.y" angeben!)## -dir Spezifiziert das Verzeichnis, in dem die Ordner mit den Update-Skripten sind## BEISPIEL: # .\GenerateDatabaseUpdate.ps1 -from 1.0 -to 1.3 -dir C:\temp\Updates# # Die einzelnen Skripte müssen in Ordnern unterhalb des in dir spezifizierten Verzeichnisses in der richtigen Reihenfolge (nach Namen sortiert) liegen.# Beispiel: "010_Skript1.sql", "020_Skript2.sql"# Die Unterordner müssen der Namenskonvention "[minorversion] to [majorversion]" folgen. ## c:\temp\updates# -> 1.0 to 1.1# -> 1.1 to 1.2# -> 1.2 to 1.3
param([string]$dir, [string]$from, [string]$to)
$directory = new-object IO.DirectoryInfo($dir)write-host "Dir:" $directory.FullName
$fileName = $directory.FullName + "\update " + $from + " to " + $to + ".sql"
$file = new-object IO.FileInfo($filename)
write-host $file.Fullnameif($file.Exists) { $file.Delete() }
$dirs = $directory.GetDirectories("* to *")$nl = [Environment]::NewLine
foreach ($d in $dirs){ $s = @($d.Name.Split(" ")) $f1 = [float]::Parse($s[0].Replace(".", ",")) $f2 = [float]::Parse($s[2].Replace(".", ","))
if($f1 -ge $from) { if($f2 -le $to) { $parseDir = $directory.FullName + "\" + $s[0] + " to " + $s[2]
$nl + "-- ++++++++++++++ " + $s[0] + " to " + $s[2] + " ++++++++++++++" + $nl >> $filename dir $parseDir | foreach-object { Get-Content $_.FullName >> $fileName } write-host "$parseDir ..." } } }
write-host "$nl Skript saved as '$filename' $nl"
Remember Me
© Copyright 2006-2010 Karim El Jed - Webdesign by GetTemplate