Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Powershell将对象插入SQL Server数据库更优雅的解决方案_Sql Server_Powershell_Object_Properties_Insert - Fatal编程技术网

Sql server Powershell将对象插入SQL Server数据库更优雅的解决方案

Sql server Powershell将对象插入SQL Server数据库更优雅的解决方案,sql-server,powershell,object,properties,insert,Sql Server,Powershell,Object,Properties,Insert,我有一个对象数组($itemObjectArray),每个对象都有以下属性和一些值: ID : 1234 Location : USA Price : $500 Color : Blue TABLE Items ( ID Location Price Color PRIMARY KEY (ID) ) 我有一个名为Items的SQL Server 2012表,其列名与对象属性名匹配,如下所示: ID

我有一个对象数组(
$itemObjectArray
),每个对象都有以下属性和一些值:

ID          : 1234
Location    : USA
Price       : $500
Color       : Blue
TABLE Items (
   ID
   Location
   Price
   Color
   PRIMARY KEY (ID)
)
我有一个名为
Items
的SQL Server 2012表,其列名与对象属性名匹配,如下所示:

ID          : 1234
Location    : USA
Price       : $500
Color       : Blue
TABLE Items (
   ID
   Location
   Price
   Color
   PRIMARY KEY (ID)
)
我创建了以下代码来将对象插入SQL Server表。我觉得我的代码有点粗糙。因为列名与对象属性名匹配,有没有更优雅的方法来实现这一点

$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
}
你应该使用


这可能会在CodeReview网站上收到更多反馈。StackOverflow用于帮助解决编程问题(我的代码错误,我不确定如何修复它),我会使用类似的方法。