ошибка данных при чтении CSV-файла в C # winforms - PullRequest
4 голосов
/ 30 декабря 2011

У меня есть C # winforms, который читает столбец из CSV-файла. Это читает 3 из 4 столбцов правильно. Четвёртый столбец в CSV-файле - S4, но в наборе данных отображается 4.

Код:

string conn = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data"
            + "Source={0}; Extended Properties=""text;HDR=YES;FMT=DELIMITED""",
              strDirectoryPath);

OleDbConnection oleDBConn = new OleDbConnection(conn);
oleDBConn.Open();

OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + strFileName + "]",
                                           conn);
DataSet ds = new DataSet();
da.Fill(ds);

Пример данных CSV:

AA0013  Incident    Incident    S4
AA0016  Incident    Incident    S3
AA0017  Incident    Incident    S3
AA0023  Incident    Incident    S3
AA0076  Issue       Issue       S3
AA0079  Incident    Incident    S6
AA0082  Issue       Issue       S6
AA0084  Incident    Incident    S6
AA0085  Incident    Incident    S6

Что может вызвать это и как я могу решить это?

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Это связано с тем, что иногда поставщик OLEDB автоматически определяет тип данных столбца и пытается преобразовать все значения в этом столбце в определенный тип данных, который он обнаруживает. Чтобы решить эту проблему, вам нужно указать файл schema.ini, который будет содержать информацию о каждом столбце и его типе данных, чтобы OLEDB не пытался неявно преобразовать любой столбец в свой собственный любимый тип данных:) ...

вот полное руководство .. http://www.aspdotnetcodes.com/Importing_CSV_Database_Schema.ini.aspx

С уважением.

1 голос
/ 31 декабря 2011

Самый простой способ - это анализ файла вручную без использования подключения к базе данных.

    string[] lines = File.ReadAllLines(path);

    foreach(string row in lines)
    {
        string[] data = row.Split(",");
        //Data processing goes here
    }

Обратите внимание, что "," является разделителем данных, вы можете использовать другой разделитель, такой как "" или ";"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...