【发布时间】:2015-09-08 00:07:54
【问题描述】:
背景:我有一个目录,其中包含许多导入到 SQL 服务器的文件。
任务:创建一个 PowerShell 脚本,该脚本将在该目录中提取文件并使用 SQL 查询中的文件名。
最终目标:要显示除了文件名之外的 SQL 结果,但所显示的结果集还应该显示在 SQL Server 中没有条目的文件。 SQL 服务器查询中的 RIGHT JOIN 之类的东西。
Powershell 代码
$files = Get-ChildItem -Recurse -Force $filePath -ErrorAction SilentlyContinue | Where-Object { ($_.PSIsContainer -eq $false) } | Select-Object Name
$Server = "Loadv1"
$DB = "LoadDB"
$dbResults = @()
ForEach ($file in $files)
{
$fileName = $file.name
write-host $fileName
if($fileName.Length -gt 1)
{
$Query = "
SELECT FileName,CurrentStatus
FROM LogStatus
WHERE FileName LIKE '$fileName%'
"
# Write-host $Query
}
$dbResults += Invoke-Sqlcmd -ServerInstance $Server -Database $DB -Query $Query
}
$dispResults = $dbResults,$file
$dispResults | Format-Table -autosize
到目前为止所做的工作:我已经能够使用 Get-ChildItem 获取文件名并循环它们以获取查询结果。但是,我目前得到的结果没有显示在 SQL Server 表中没有相应条目的文件
当前结果
OperationalLanding20150622061502.dat
OperationalLandingAudit20150622061502.dat
OperativeThird_Party_System20150616090701.dat
FileName CurrentStatus
OperationalLandingAudit20150622061502.dat SSIS Package Complete
OperativeThird_Party_System20150616090701.dat SSIS Package Complete
预期结果
OperationalLanding20150622061502.dat
OperationalLandingAudit20150622061502.dat
OperativeThird_Party_System20150616090701.dat
FileName CurrentStatus
OperationalLanding20150622061502.dat NULL
OperationalLandingAudit20150622061502.dat SSIS Package Complete
OperativeThird_Party_System20150616090701.dat SSIS Package Complete
希望我能在上面解释我的要求。
【问题讨论】:
标签: sql-server sql-server-2008 powershell