我正在编写一个从数据库中提取任意 SQL 查询的 PowerShell 脚本。这些查询可能会变得非常大,在尝试 sqlcmd 之后,我最终得到了 StreamWriter / SqlCommand 组合。我遇到的问题是执行有点慢。就像 10 倍一样慢。我被告知它应该更快,因此问题。编码!
$conn.ChangeDatabase("MyDB")
$mycmd = new-object System.Data.SqlClient.SqlCommand($Myquery, $conn)
$mycmd.CommandType = [System.Data.CommandType]::Text
$mycmd.CommandTimeout = 300
echo "Executing Reader."
$Results = $mycmd.ExecuteReader()
echo "Opening file for writing."
$sw2 = new-object system.IO.StreamWriter($sqlOutput, 1)
echo "File Opened for Writing."
$delimiter = ","
echo "Starting Row Reading"
$Counter = $Results.FieldCount
echo $Counter
# Put in header row on first execution.
$currtext = ""
if ($Counter -gt 0)
{
echo "Writing Header Row as:"
for ($i = 0; $i -lt $Counter; $i++)
{
$currtext = $currtext + $Results.GetName($i)
if ($i -lt $Counter - 1)
{$currtext = $currtext + $delimiter}
}
echo $currtext
$sw2.writeline($currtext)
$firstexecution = 0
}
else
{
$sw2.writeline("No Data Found")
}
$rowcount = 0
while ($Results.Read())
{
$rowcount = $rowcount + 1
#echo "Reading Row"
$i = 0
$currtext = ""
for ($i = 0; $i -lt $Counter; $i++)
{
#echo "Processing Row"
$currtext = $currtext + """" + [string]$Results[$i] + """"
if ($i -lt $Counter - 1)
{ $currtext = $currtext + $delimiter }
}
#echo "Writing Line."
#echo $currtext
$sw2.writeline($currtext)
}
echo "Total Rowcount:" + $rowcount
$sw2.flush()
$sw2.close()
$sw2.dispose()
$Results.close()
任何人都知道我做错了什么/如何解决它?