我在使用PowerShell和Postgres PSQL命令时遇到了一个小问题。我正在使用PowerShell和\COPY命令将一个.CSV文件加载到postgres DB中。一切正常,但我发现了一个PSQL命令执行错误的案例,原因是.csv格式不正确。不幸的是,即使我尝试捕获PSQL命令,这也没有得到很好的处理我可以减轻错误,但我想找到一种方法来正确处理它,并能够停止进程或拒绝文件的情况下的问题。
这是我的代码:
$Copydatatotable = "\COPY $Load_table_path (account, account_holder, Bank, account_type,......
Write-Host " $Copydatatotable"
try
{
psql -h $MyServer -U $MyUid -d $MyDB -p $MyPort -c $Copydatatotable
}
catch
{
Write-Host " --> IN CATCH"
$Copydatatotable = "INSERT INTO $Load_process_log_table_not_loaded_path (file_path,.....
throw $_
$Try_catch_value = "Y"
}
这是错误:
# #
# STEP 5 - Load file into temporary table #
# #
# #
\COPY "temp_load_prod".isabel_transaction (account, account_holder, Bank, account_type, ......
ERROR: missing data for column "account_holder"
CONTEXT: COPY isabel_transaction, line 1284: ""
1条答案
按热度按时间jdgnovmf1#
若要在执行psql命令时处理PowerShell中的错误,可以使用Invoke-Expression cmdlet的-ErrorAction参数指定PowerShell在执行命令时处理错误的方式。可以将-ErrorAction参数设置为“停止”,以便在发生错误时停止脚本执行。
下面是一个如何修改代码以正确处理错误的示例:
在此示例中,Invoke-Expression cmdlet用于执行psql命令,而-ErrorAction参数设置为"停止“,以便在发生错误时停止脚本执行。然后,catch块用于处理错误并执行任何必要的错误处理或清理。Write-Error cmdlet用于将错误消息输出到错误流,脚本的调用方可以捕获和处理该错误流。