Сопоставить заголовки CSV со столбцами SQL с помощью LINQ - PullRequest
0 голосов
/ 02 мая 2019

Я анализирую файлы CSV и создаю список объектов, которые мне понадобятся для импорта их в базу данных SQL.CSV-файл имеет разные имена заголовков, которые я могу сопоставить их для каждого столбца определенной таблицы.

LINQ не работает, так как имена не совпадают.

Я пробовал все возможные учебные пособия и боковой способно не может отобразить заголовки csv в определенный столбец базы данных.

using (TextReader reader = File.OpenText(file))
{
    List<CSVObject> ListCSVObject = new List<CSVObject>();
    CsvReader csv = new CsvReader(reader);
    csv.Configuration.Delimiter = ",";
    csv.Configuration.MissingFieldFound = null;

    while (csv.Read())
    {
        CSVObject objectRow = csv.GetRecord<CSVObject>();
        double time = Convert.ToDouble(objectRow.Timestamp);
        DateTime dateTimeUTC = ConvertFromUnixTimestamp(time);
        objectRow.DateTimeUTC = dateTimeUTC;
        ListCSVObject.Add(objectRow);
    }

    LINQToSQLDataContext db = new LINQToSQLDataContext(connectString);
    foreach(CSVObject obj in ListCSVObject)
    {
        db.dbtoinsert.InsertOnSubmit(obj);
    }

    db.SubmitChanges();
}

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Мой совет: не создавайте свой собственный ридер CSV-файлов; используйте вместо этого пакет Nuget CsvHelper

CsvHelper может принимать любой структурированный CSV-файл, с любым типом разделителя и со строкой заголовка или без нее.

Если у вашего CSV есть строка заголовка, вы можете сказать помощнику CSV, что столбец с именем «Фамилия» должен быть помещен в свойство «LastName» вашего класса.

Даже если в вашем CSV-файле нет строки заголовка, вы можете сказать, что столбец 7 должен быть сопоставлен с «LastName», а столбец 9 - с «Дата рождения»

Посетите страницу документации для простых примеров

0 голосов
/ 02 мая 2019

Вы можете выполнить инициализацию объекта перед его вставкой в ​​базу данных.

как то так.

db.dbtoinsert.InsertOnSubmit(new YourTable { Col1 = obj.CSVCol1, ... });

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