Ich habe ein Array von Objekten ($itemObjectArray
), die jeweils mit diesen Eigenschaften und einige Werte wie so:Powershell das Einfügen eines Objekts in SQL Server-Datenbank elegantere Lösung
ID : 1234
Location : USA
Price : $500
Color : Blue
ich eine SQL Server 2012-Tabelle genannt haben Items
mit Spaltennamen, die die Objekteigenschaftsnamen wie so passen:
TABLE Items (
ID
Location
Price
Color
PRIMARY KEY (ID)
)
ich habe den folgenden Code erstellt das Objekt in die SQL Server-Tabelle einzufügen. Ich denke, mein Code ist ein wenig grob. Gibt es eine elegantere Möglichkeit, dies zu tun, da die Spaltennamen den Objekteigenschaftsnamen entsprechen?
$itemObjectArray | %{ #step through array
#get property names, which match column names
$names = $_ | Get-Member -membertype properties
Foreach($name in $names.name){ #make SQL string for column names
$cols += $name + ","
}
$cols = $cols.trimend(",") #get rid of last comma
Foreach($name in $names.name){
#step through properties, get values and build values string
$vals += "'" + $_.$($name) + "',"
}
$vals = $vals.trimend(",") #get rid of last comma
$sqlCommand.CommandText = "INSERT INTO Items ($cols) VALUES ($vals)"
$sqlCommand.ExecuteNonQuery() #insert
$cols = $Null #wipe
$vals = $Null
}
Dies könnte mehr Feedback auf der CodeReview-Website erhalten. StackOverflow ist für die Hilfe bei der Programmierung von Fragen (meine Code-Fehler und ich bin mir nicht sicher, wie es zu beheben) – user4317867
Ich würde etwas wie [this] (https://gallery.technet.microsoft.com/scriptcenter/Import-Large-CSVs -into-SQL-216223d9). –