Экспорт SQL Данные сервера в файл CSV на настольных данных, содержащих запятые - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь экспортировать данные в файл CSV с сервера SQL. Код по этой ссылке ( Экспорт SQL Данные сервера в файл CSV ) работает только с некоторыми. В некоторых строках, содержащих запятые, расположение таблиц неверно. Код, который я пробовал

using (var connection = ConnectionToSqlServer.GetConnection())
{
    connection.Open();

    SqlCommand sqlCmd = new SqlCommand("Select * from  dbo.Test", connection);
    SqlDataReader reader = sqlCmd.ExecuteReader();

    string fileName = "test.csv";
    StreamWriter sw = new StreamWriter(fileName);
    object[] output = new object[reader.FieldCount];

    for (int i = 0; i < reader.FieldCount; i++)
    {
         for (int i = 0; i < reader.FieldCount; i++)
         {

           if (reader.GetName(i).Contains(","))
           {
              output[i] = "\"" + reader.GetName(i) + "\"";
            }
            else
            output[i] = reader.GetName(i);
           }
    }

    sw.WriteLine(string.Join(",", output));

    while (reader.Read())
    {
        reader.GetValues(output);
        sw.WriteLine(string.Join(",", output));
    }

    sw.Close();
    reader.Close();
    connection.Close();
}

1 Ответ

0 голосов
/ 08 апреля 2020

Я предлагаю вам рассмотреть следующие варианты:

  1. Укажите значения, чтобы иметь правильную генерацию CSV. Если содержимое CSV содержит ,, то сгенерированный CSV может иметь проблему.
while (reader.Read())
{
    reader.GetValues(output);
    sw.WriteLine(string.Join(",", $"\"{output}\""));
}
Вы можете подумать об использовании библиотеки как CSVHelper
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...