如何解决将Powershell变量传递给MySQL
我正在使用SimplySQL(https://github.com/mithrandyr/SimplySql)从Powershell访问MySQL。我有一个脚本可以获取昨天的日出和日落时间。我接下来要做的是将这些变量传递到mysql脚本中,以从这些小时之间提取相应的值列。但是,我缺少一些东西。
日出/日落:
$yesDate = (Get-Date).AddDays(-1) | Get-Date -Format "yyyy-MM-dd"
$daylight = (Invoke-RestMethod "https://api.sunrise-sunset.org/json?lat=35.608237&lng=-78.647497&formatted=0&date=$esDate").results
$sunrise = ($daylight.Sunrise | Get-Date -Format "HH:mm:ss")
$sunset = ($daylight.Sunset | Get-Date -Format "HH:mm:ss")
MySQL查询:
CD "C:\Program Files\MySQL\MySQL Server 5.7\bin"
Open-MySqlConnection -UserName xxxxxxx -Password -Database xxxxxxxx
Invoke-SqlQuery -Query "select LogDateTime,UVindex from `monthly_new` where LogDateTime between (curdate()) - interval 1 day and (curdate())"
Close-SqlConnection
现在,分别运行每个变量,分别设置变量,并返回昨天上午12点至晚上11:59的所有值。但是,如果我尝试将$ sunrise和$ sunset变量集成到mysql查询中,则不知道发生了什么。这可能只是一个简单的语法问题,但我不确定。
解决方法
正确的方法是避免在SQL查询文本中插入参数。
从Oracle中获取MySQL .Net connector
(实际上,整个安装过程中您只需要MySql.Data.dll
个文件)
然后供SELECT使用DataAdapter。它接受连接字符串和SQL命令。
ConnectionString可能包含参数。
然后添加带有值的参数。
然后创建DataSet并使用适配器填充它。
与dataset.tables[0]
一起使用,并与具有属性的对象数组一起使用。
类似的事情,我现在没有要测试的MySQL。
Add-Type -Path "C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.21\Assemblies\v4.5.2\MySql.Data.dll"
$sqlCommandSelect = 'select LogDateTime,UVindex from `monthly_new` where LogDateTime between @param1 and @param2'
$sqlConnString = 'server=server;user=user;database=db;password=*****;"'
$dataAdapter = [MySql.Data.MySqlClient.MySqlDataAdapter]::new($sqlCommandSelect,$sqlConnString)
$dataAdapter.SelectCommand.Parameters.AddWithValue('@param1',[DateTime]::Today.AddDays(-1))
$dataAdapter.SelectCommand.Parameters.AddWithValue('@param2',[DateTime]::Today)
$dataSet = [System.Data.DataSet]::new()
$numRecords = $dataAdapter.Fill($dataSet)
foreach ($row in $dataSet.Tables[0])
{
Write-Host "$($row.LogDateTime)`t$($row.UVindex)"
}
$dataSet.Dispose()
$dataAdapter.Dispose()
或者,您可以直接将变量写入SQL查询,但是您需要以MySQL可接受的格式编写变量。我想这是o
格式:
$query = "select ... '($($date1.ToString('o')))' and '($($date2.ToString('o')))'"
类似的事情,我不确定($($ ....))周围的报价
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。