Проблема с импортом файла CSV с помощью FileHelpers

Я использую библиотеку FileHelpers для импорта файлов CSV в таблицу базы данных. Я' m возникла проблема с импортом файла, поле которого начинается с числа ('800NUMBER') в заголовке файла.

Код для импорта:
DataTable data = CommonEngine.CsvToDataTable (file, ',');

Исключение:
FileHelpers.FileHelpersException: строка '800NUMBER' не является допустимым идентификатором .NET. в FileHelpers.RunTime.FieldBuilder..ctor (String fieldName, String fieldType) в FileHelpers.RunTime.DelimitedClassBuilder.AddField (String fieldName, String fieldType) в FileHelpers.RunTime.CsvClassBuilder.AddField (поле String .DelimitedClassBuilder.AddField (String fieldName) в FileHelpers.RunTime.CsvClassBuilder..ctor (параметры CsvOptions) в FileHelpers.CsvEngine.CsvToDataTable (String имя файла, String имя класса, Char delimiter, Boolean hasHelader.) CommonEngine.CsvToDataTable (String filename, Char delimiter)

Я не уверен, есть ли способ избежать имени столбца, такого как '[800NUMBER]'.

Имя столбца не может быть изменено, поскольку клиент предоставляет его нам именно так.


Эта проблема решена путем чтения строки «заголовок» отдельно от строк «данных». Затем я меняю имена столбцов в «данных» и использую SqlBulkCopy для импорта в базу данных.

    FileHelpers.CsvOptions options = new FileHelpers.CsvOptions("ImportRecord", ',', file);
    options.HeaderLines = 0;        

    FileHelpers.CsvEngine engine = new FileHelpers.CsvEngine(options);

    engine.Options.IgnoreFirstLines = 0; 
    DataTable header = engine.ReadStringAsDT(FileHelpers.CommonEngine.RawReadFirstLines(file, 1)); 

    engine.Options.IgnoreFirstLines = 1;
    DataTable data = engine.ReadFileAsDT(file); 

    for (int i = 0; i < header.Columns.Count; i++)
        data.Columns[i].ColumnName = header.Rows[0][i].ToString();
12
задан halfer 25 July 2019 в 10:42
поделиться