У меня есть следующий скрипт PowerShell, который будет извлекать из переданной папки все файлы .wav
, получать некоторую информацию и экспортировать в файл .csv
, я хотел бы получить помощь по вставке в таблицу SQL Server. .
Param($FolderPath)
$fulldate = Get-Date -format yyyyMMdd
$startPath = Join-Path -Path $FolderPath -ChildPath $fulldate
$com = (New-Object -ComObject Shell.Application).NameSpace($startPath)
for($i = 0; $i -lt 64; $i++) {
$name = $com.GetDetailsOf($com.Items, $i)
if ($name -eq 'Length') { $lengthattribute = $i}
}
$com.Items() |
ForEach-Object {
[PSCustomObject]@{
Name = $_.Name
Size = $com.GetDetailsOf($_, 1)
DateCreated = $com.GetDetailsOf($_, 4)
Length = $com.GetDetailsOf($_, $lengthattribute)
}
} | Export-Csv -Path c:\Dell\audiolength.csv -Encoding ascii -NoTypeInformation
Get-Content c:\Dell\audiolength.csv -Encoding UTF8 | % { $_ -replace """","" } | Out-File "c:\Dell\audiolengthCLEAN.csv"
Он работает так:
.\test.ps1 'c:\Dell\'
Сейчас он вставляется в .CSV
, но я хочу вставить его прямо на SQL Сервер.
Это то, что у меня есть для SQL, но оно не работает ...
Param(
$FolderPath
)
$server = "localhost"
$Database = "Data"
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$fulldate = Get-Date -format yyyyMMdd
$startPath = Join-Path -Path $FolderPath -ChildPath $fulldate
$com = (New-Object -ComObject Shell.Application).NameSpace($startPath)
for($i = 0; $i -lt 64; $i++) {
$name = $com.GetDetailsOf($com.Items, $i)
if ($name -eq 'Length') { $lengthattribute = $i}
}
$com.Items() |
ForEach-Object {
[PSCustomObject]@{
Name = $_.Name
Size = $com.GetDetailsOf($_, 1)
DateCreated = $com.GetDetailsOf($_, 4)
Length = $com.GetDetailsOf($_, $lengthattribute)
} | Select-Object -Property Name,Size,DateCreated,Length
$toto = 'Size'
foreach($i in $com) {
$sql ="
INSERT INTO [dbo].[audiolength]
([Name]
,[Size]
,[DateCreated]
,[Length])
VALUES
('$lengthattribute'
,'$toto'
,'DateCreated'
,'Length')
"
$Command.CommandText = $sql
$Command.ExecuteReader()
}
$Connection.Close()
}