sql - 通过 PowerShell 将数据插入 SQL 时缺少行
问题描述
我有一个脚本,它每 5 分钟从外部源 (five9) 提取数据并将其加载到 SQL 服务器中,如下所示。该脚本似乎在大多数情况下都有效,但是每当我将前一天的结果与外部源的结果进行比较时,我总是在 SQL 中少几百到一千行(总共 50,000 到 100,000 行)。脚本在 PowerShell 中运行没有任何错误。
我有第二个相同的脚本,具有不同的开始/结束时间来拉动每晚运行的最后 24 小时,虽然这确实减少了一些丢失的行,但问题仍然存在。
重复值受与每行中的其他值连接的唯一键值的限制。我尝试关闭 SQL 中的唯一设置并手动进行重复数据删除,但仍然缺少行。
我已经验证了我的唯一字符串实际上是唯一的,方法是将来自外部源的结果转储到一个 excel 文件中并在那里连接,然后检查重复项。这不会产生任何结果。
我已经能够准确地识别出 SQL 中缺少哪些行,不幸的是,这些数据并没有真正让我觉得有问题。
任何人可以提供的任何帮助或见解将不胜感激。一个多月以来一直在为此拉头发,哈哈。
$reportid = Start-Five9Report -FolderName folder -ReportName report -EndDateTime (Get-Date).AddMinutes(-1) -StartDateTime (Get-Date).AddMinutes(-6)
$reportid
$reportresult = Get-Five9ReportResult -Identifier $reportid
$timeZoneOffset =
@{
PST = 0
MST = 1
CST = 2
EST = 3
}
$localTimeZone = 'EST'
foreach($reportresult in $reportresult)
{
$VARDATE = $reportresult.Date
$VARTIME = $reportresult.TIME
$VARDATETIME = "$($VARDATE)T$VARTIME"
$REPORTDATETIME = ([datetime]$VARDATETIME).AddHours($timeZoneOffset[$localTimeZone]).ToString('s')
$DATE = $REPORTDATETIME.Substring(0,10)
$HOUR = "$($REPORTDATETIME.Substring(11,3))00:00"
$MONTH = $REPORTDATETIME.Substring(5,2)
$TIME = $REPORTDATETIME.Substring(11,8)
$YEAR = $REPORTDATETIME.Substring(0,4)
${REPORT RESULTS} = $reportresult.("REPORT RESULTs")
$insertquery="
Insert into [dbo].[table]
(
[VALUE],
//many other values
)
values
(
'$($DATE -replace "'", "''")',
'$($HOUR -replace "'", "''")',
'$($MONTH -replace "'", "''")',
'$($TIME -replace "'", "''")',
'$($YEAR -replace "'", "''")',
'$($VALUE -replace "'", "''")',
'$(${SPACED VALUE} -replace "'", "''")',
//many other values
'$("${VALUE}${VALUE}${VALUE}${VALUE}${VALUE}${VALUE}${VALUE}${VALUE}")' //Combined from several fields to serve as unique key
)
GO
"
Invoke-Sqlcmd -ServerInstance 'server' -query $insertquery -Username user -Password ("password") -database database
};```
解决方案
推荐阅读
- javascript - 如何将 html 元素放入时间文字表达式中
- angular - Angular 10 ERROR TypeError:无法设置未定义的属性(var)
- excel - 如何简化我的 VBA 代码以更快地运行?
- flutter - 如何从子无状态小部件设置有状态小部件的状态
- java - 使用 Tomcat 部署 Spring Boot
- mysql - 如何以在 SQL 中始终以“A”或“EA”或“JW”开头的方式向列属性添加值
- python - 使用搁置保存和加载变量
- sql - 在 oracle db 中查询 where 条件为“某事”
- android - MVVM 中 StateFlow 的多状态
- ios - 在单个 Data 实例中存储多个不同类型对象的数据表示