我有一个Employees的基本SQL表。使用powershell脚本我想将已经超过1000个销售的所有员工导出到.csv文件,其余的则导出到不同的.csv文件中。我想通过使用循环来完成此任务。我是powershell的新手,想要学习基础知识。有人可以帮忙吗?
SQL Table (not real employees)
这是我到目前为止所做的:
loader.add_css('field', 'td:nth-child(8) > span.cap.mtv > ::text')
loader.add_xpath('field', 'td[8]/div/text()')
答案 0 :(得分:0)
我并不熟悉你用来获得结果的方法,但我认为我有类似的东西,可能更容易为你工作。它会将所有结果都记录到PS中,您可以从那里过滤掉事物,而不是一次获得一个结果。您显然知道如何制作自己的SqlConnection和SqlCommand,我只是将它们包括在内以供将来读者参考。
# Define SQL query
$sqlQuery = @"
SELECT *
FROM MyTable
"@
# Create a SqlConnection to connect to the SQL DB
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection
$sqlConnection.ConnectionString = "Server = $SqlServer; Database =$SqlCatalog; User Id = $User; Password = $Password"
# Create a SqlCommand object to define the query
$sqlCmd = New-Object System.Data.SqlClient.SqlCommand
$sqlCmd.CommandText = $sqlQuery
$sqlCmd.Connection = $sqlConnection
# Create a SqlAdapter that actually does the work and manages everything
$sqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$sqlAdapter.SelectCommand = $sqlCmd
# Create an empty DataSet for the query to fill with its results
$dataSet = New-Object System.Data.DataSet
# Execute the query and fill the DataSet (then disconnect)
$sqlAdapter.Fill($dataSet)
$sqlConnection.Close()
# Convert DataSet table to array for ease of use
[Array]$Results = $dataSet.Tables[0]
除此之外,你可以使用一对Where
语句来过滤结果,然后输出到文件。
$Results | ?{[int]$_.Sales -ge 1000} | Set-Content $highDestFile
$Results | ?{[int]$_.Sales -lt 1000} | Set-Content $lowDestFile