【发布时间】:2022-10-17 05:35:10
【问题描述】:
每天,我需要更新数据库中一定数量的记录。
现在要更新这个数据库,我正在使用合并-->选择-->更新依次。
但我需要显示此更新语句的输出(在日志文件中)
代码:更新状态.ps1
$FilePath = $HOME+"\bin\ORACLE_CONNECTION_HOME\oracle_config.properties"
$SID=Select-String -Pattern "oracle_SID" -Path $FilePath
$Data_Source=$SID.ToString().split('=')[1]
$user_name=Select-String -Pattern "oracle_user_name" -Path $FilePath
$User=$user_name.ToString().split('=')[1]
$user_password=Select-String -Pattern "oracle_user_password" -Path $FilePath
$Pwd=$user_password.ToString().split('=')[1]
$connectionString= "Data Source=$Data_Source;User Id=$User;Password=$Pwd;Integrated Security=no"
[System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient") | Out-Null
$connection = New-Object System.Data.OracleClient.OracleConnection($connectionString)
function Oracle_Connection ( $query)
{
$connectionString= "Data Source=$Data_Source;User Id=$User;Password=$Pwd;Integrated Security=no"
[System.Reflection.Assembly]::LoadWithPartialName("System.Data.OracleClient") | Out-Null
$connection = New-Object System.Data.OracleClient.OracleConnection($connectionString)
$queryString = $query
$command = New-Object System.Data.OracleClient.OracleCommand($queryString, $connection)
$connection.Open()
$dataset = New-Object System.Data.DataTable
$oracleadapter = New-Object System.Data.OracleClient.OracleDataAdapter $command
$resultcount = $oracleadapter.fill($dataset)
$result = $command.ExecuteScalar()
Write-Host $result
$connection.Close()
}
function Update_p2c ($p2c, $c2p)
{
Write-Host "Updating P2C"
$query_sub_p2c ="MERGE INTO TABLE TB USING (SELECT ...) src ON ( NAME = src.NAME) WHEN MATCHED THEN UPDATE SET TB.P2C = src.ID";
Oracle_Connection $query_p2c
if ($resultcount -gt 0) { Write-Host "$resultcount rows were updated"} else {Write-Host "No rows were updated"}
}
##Initial setup completed.
#Defining Source and Target variables used in functions
$p2c = 'P2C'
$c2p = 'C2P'
Update_p2c -p2c $p2c -c2p $c2p
##End
结果:
PS D:\
Updating P2C
No rows were updated
但是,我看到当我在数据库中手动运行选择和更新时,我可以看到行分别被选中和更新。
此脚本由任务调度程序中的 .bat 文件触发,并生成一个日志文件
bat文件:
pushd "%~dp0"
start /B /WAIT powershell -File "D:\bin\update_status.ps1" >> D:\log\update_status_%USERNAME%_%date%_log.log 2>&1
exit
我的要求是:我需要将更新的输出(从数据库更新的某某行)到日志文件中。即使没有更新任何行,它也应该显示相同。
如果我的问题不清楚,请告诉我。
任何帮助将不胜感激 :)
【问题讨论】:
-
如果我理解正确,您希望将 $result 的内容写入日志文件?
-
是的,我需要跟踪日志文件中更新的行。
标签: oracle powershell