Ich habe ein PowerShell-Skript, um Daten aus einer Datenbank zu ziehen, aber einige der Felder enthalten Kommas und das führt zu einer Aufschlüsselung der Felder, weil der StreamReader es in Felder durch Komma aufteilt. Wie kann ich das Trennzeichen für die Aufteilung der Daten in die Felder ändern?PowerShell StreamReader Change Delimiter
$ConnectionString = "Data Source=server1; Database=Development; Trusted_Connection=True;";
$streamWriter = New-Object System.IO.StreamWriter ".\output.csv"
$sqlConn = New-Object System.Data.SqlClient.SqlConnection $ConnectionString
$sqlCmd = New-Object System.Data.SqlClient.SqlCommand
$sqlCmd.Connection = $sqlConn
$sqlCmd.CommandText = "SELECT * FROM Development.dbo.All_Opportunities WITH(NOLOCK)"
$sqlConn.Open();
$reader = $sqlCmd.ExecuteReader();
# Initialze the array the hold the values
$array = @()
for ($i = 0 ; $i -lt $reader.FieldCount; $i++)
{ $array += @($i) }
# Write Header
$streamWriter.Write($reader.GetName(0))
for ($i = 1; $i -lt $reader.FieldCount; $i ++)
{ $streamWriter.Write($("," + $reader.GetName($i))) }
$streamWriter.WriteLine("") # Close the header line
while ($reader.Read())
{
# get the values;
$fieldCount = $reader.GetValues($array);
# add quotes if the values have a comma or double quote
for ($i = 0; $i -lt $array.Length; $i++)
{
if ($array[$i] -match "`"|\S")
{
$array[$i] = '"' + $array[$i].Replace("`"", "`"`"").ToString() + '"';
}
}
$newRow = [string]::Join(",", $array);
$streamWriter.WriteLine($newRow)
}
$reader.Close();
$sqlConn.Close();
$streamWriter.Close();
Ich sehe keinen StreamReader irgendwo. Ich sehe einen StreamWriter und einen SqlDataReader. Was meinst du? –