我有一个从代理作业中调用的PowerShell脚本,它打开一个.CSV文件,将它转换成.CSV,并将.CSV文件保存在特定的位置,准备好用大容量插入导入它。
我需要做的是在加载文件之前先计算文件中的行数。当文件超过一定数量的行时,我希望将该文件加载到另一个表中。这在PowerShell中很简单,我可以将计数输入到PowerShell变量中,没有问题。
但是,我不知道如何将该变量读入SQL,以便在批量插入过程中使用它。
因此,我的问题是:当从SQL作业运行PowerShell时,如何从该PowerShell脚本的输出中读取值,无论是表、临时表还是变量,我都不介意哪一个?
发布于 2020-02-13 14:41:10
感谢@Tony给出了一个评论的答案。在这里,它被提升为一个实际的答案,所以希望下一个提出这个问题的人找到它:
我在我的“自动化”数据库中创建了一个名为"ImportRowCount“的表,其中有一个名为"RowCount”的列,并在其中插入了一个数字0的行
接下来,我将这一行添加到我的Powershell脚本中:
invoke-sqlcmd -ServerInstance SQLServerHostName -Query "UPDATE Automation.dbo.ImportRowCount SET RowCount = $NumRows"(将"SQLServerHostName“替换为实际服务器的主机名)
因此,现在我的Powershell脚本每次运行时都会用$NumRows变量的值更新这一行。
这是完美的,因为我可以在运行剩下的进程之前读取该表的内容,并且我可以使用它作为决策点,根据文件中的行数将我的代码分支到不同的路径。
https://dba.stackexchange.com/questions/259616
复制相似问题