0
データベースからデータを取得するためのPowerShellスクリプトがありますが、一部のフィールドにはカンマが含まれているため、StreamReaderがコンマでフィールドに分割するため、フィールドが分割されます。データをフィールドに分割する方法の区切り文字を変更するにはどうすればよいですか?PowerShell StreamReader変更区切り文字
$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();
どこにでもStreamReaderが表示されません。 StreamWriterとSqlDataReaderが表示されます。それはどういう意味ですか? –