2011-04-20 17 views
2

我需要在來自select-object的對象的powershell數組開始的sql server db上創建並填充表。我需要用正確的數據類型和字段創建表。使用PowerShell創建SQL Server中的記錄表:什麼是最好的?

我很清楚的一種方法是export-csv,然後invoke-sqlcmdBULK INSERT,但我更喜歡跳過csv導出。

如何invoke-sqlcmd通常用於從哈希表數組開始創建/填充表? 你知道其他方式做同樣的工作,而不使用invoke-sqlcmd?我需要使用System.Data嗎?如何?

由於

EDIT 1:另一種可能的方式是通過New-Object System.Data.SqlClient.SqlConnection,我可以ExecuteNonQuery()對於每個陣列元素。

編輯2:另一個選項,總是基於System.Data,更新SqlDataAdapter實例。

回答

3

我寫了一個博客帖子的腳本專家,涵蓋了這樣的情景

http://blogs.technet.com/b/heyscriptingguy/archive/2010/11/01/use-powershell-to-collect-server-data-and-write-to-sql.aspx

使用的博客文章,你可以採取任何PowerShell命令展示了代碼中創建一個System.DataTable,然後創建一個SQL Server表,最後將DataTable插入到新創建的表中。這裏有一個例子

$dt = get-psdrive | out-datatable 
Add-SqlTable -ServerInstance "Z003\R2" -Database dbutility -TableName psdrive -DataTable $dt 
Write-DataTable -ServerInstance "Z003\R2" -Database "dbutility" -psdrive"diskspace" -Data $dt 
+0

謝謝,它看起來非常接近我的要求。我會告訴你。 – 2011-04-21 04:52:51

+0

我必須將我的散列表數組轉換爲數據表之前嗎?是否有一些簡單的方法可以實現這一點,例如只是使用'cast'? – 2011-04-21 05:05:58

+0

好的乍得!我在互聯網上發現了[sqlservercentral](http://www.sqlservercentral.com/articles/powershell/65196/)中的以下文章,這並不令人驚訝,你寫的是:),在這裏你介紹'out-datatable'功能。你認爲這是一個不錯的選擇?它保持數據類型嗎?非常感謝您的幫助。 – 2011-04-21 05:25:49

相關問題