使用循环查询SQL表到CSV文件的PowerShell脚本

时间:2018-01-23 21:03:42

标签: sql sql-server powershell csv

我有一个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()')

1 个答案:

答案 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