создать таблицу с записями в SQL Server с PowerShell: что лучше? - PullRequest
2 голосов
/ 21 апреля 2011

Мне нужно создать и заполнить таблицу на БД sql server, начиная с массива powershell объектов, поступающих из select-object. Мне нужно создать таблицу с правильными типами данных и полями.

Один из известных мне способов - это export-csv, а затем invoke-sqlcmd с BULK INSERT, но я предпочитаю пропустить экспорт в CSV.

Как invoke-sqlcmd обычно используется для создания / заполнения таблицы, начиная с массива хеш-таблиц? Знаете ли вы другие способы выполнения той же работы без использования invoke-sqlcmd? Нужно ли использовать System.Data? Как?

Спасибо

РЕДАКТИРОВАТЬ 1: Другой возможный способ - New-Object System.Data.SqlClient.SqlConnection, с помощью которого я мог бы ExecuteNonQuery() для каждого элемента массива.

РЕДАКТИРОВАТЬ 2: Другой вариант, всегда основанный на System.Data, это обновить SqlDataAdapter экземпляр.

1 Ответ

3 голосов
/ 21 апреля 2011

Я написал сообщение в блоге для сценариста, в котором описан именно такой сценарий

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
...