Импорт данных в SQL и добавление полей для ввода - PullRequest
1 голос
/ 30 декабря 2011

На моем сервере установлена ​​версия powershell 2.0.0.1082.Я хочу импортировать данные из текстового файла на сервер SQL и добавить два новых поля (символьное и текущее время) к входным данным базы данных SQL 2008.Я использовал массовый импорт или SSIS для этого, но я хочу использовать powershell для простоты поддержки процесса.Файл имеет имя столбца вверху, и каждое поле отделяется "|".Код до сих пор:

clear

 import-csv "Disk.txt" -Delimiter "|" | 
 foreach { add-member -in $_ -membertype noteproperty DateRecorded $((Get-Date).ToString("yyyy-MM-dd")) 
 add-member -in $_ -membertype noteproperty SystemName 'System Name'
 add-member -in $_ -membertype noteproperty Drive 'Drive Letter'
 add-member -in $_ -membertype noteproperty TotalSizeGB 'Total Size'
 add-member -in $_ -membertype noteproperty UsedGB Used
 add-member -in $_ -membertype noteproperty FreeGB Free
 add-member -in $_ -membertype noteproperty PercentFree '% Free'}|
select DateRecorded,SystemName,Drive,TotalSizeGB,UsedGB,FreeGB,PercentFree |Format-Table

Любые идеи, пожалуйста?

Спасибо!

Manjot

1 Ответ

1 голос
/ 30 декабря 2011

Вам нужно будет либо добавить переключатель -PassThru в командлет Add-Member, чтобы перенаправить объекты в конвейер, либо поставить $_ все в конце блока ForEach.

Вот пример использования -PassThru:

Import-Csv "Disk.txt" -Delimiter "|" | ForEach {
    Add-Member -InputObject $_ -MemberType NoteProperty -name "DateRecorded" -value $((Get-Date).ToString("yyyy-MM-dd"))
    Add-Member -InputObject $_ -MemberType NoteProperty -name "SystemName" -value 'System Name' -PassThru
} | Select DateRecorded,SystemName,Drive,TotalSizeGB,UsedGB,FreeGB,PercentFree | Format-Table

Другой пример без -PassThru:

Import-Csv "Disk.txt" -Delimiter "|" | ForEach {
    Add-Member -InputObject $_ -MemberType NoteProperty -name "DateRecorded" -value $((Get-Date).ToString("yyyy-MM-dd"))
    Add-Member -InputObject $_ -MemberType NoteProperty -name "SystemName" -value 'System Name'
    $_
} | Select DateRecorded,SystemName,Drive,TotalSizeGB,UsedGB,FreeGB,PercentFree | Format-Table

Как только вы подготовили данные CSV для вводав базу данных вы можете использовать командлет Invoke-SqlCmd, который поставляется с SQL Server 2008 для выполнения вставок.Здесь вы найдете множество информации о MSDN , чтобы показать вам, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...