@mississippi

Как удачно распарсить огромный файл .csv?

Есть задача: взять файл csv, распарсить его и записать данные в БД(использую Entity). В БД 617 столбцов с разных типов данных (int, real, varchar, datetime). Вопрос: каким образом можно это сделать лучше всего??
  • Вопрос задан
  • 326 просмотров
Пригласить эксперта
Ответы на вопрос 3
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Если данных много и их нужно просто добавить (INSERT INTO), то забыть про Entity Framework и использовать SqlBulkCopy.

Также следует подумать об уменьшении числа столбцов, 617 - это многовато :-)

Типы придется руками делать, если в CSV не содержится никакой информации о типе данных (например, в заголовке таблицы). Как вариант, можно попробовать определить тип данных автоматически по первой строке данных. Например, если в поле только числа, то считать, что это int (\d+), если числа и есть разделитель, то float ([\d\,\.]+), если дата (\d{1,2}\.\d{1,2}\.\d{2,4}), то datetime (или date), если true или false (true|false), то bool (bit), а по умолчанию varchar. В скобках указан примерный вариант шаблонов регулярных выражения для проверки.
Ответ написан
Комментировать
@shmaroder
https://creditpower.ru
CSV-TO-SQL - вот онлайн удобный сервис. Сделает скрипт SQL. Сам поймет где varchar, bool и прочее. Но 617 столбцов это жесть конечно.. )
Ответ написан
Комментировать
2ord
@2ord
Если это разовая задача, то лучше импортировать через клиент СУБД:
MsSQL: https://support.discountasp.net/kb/a1179/how-to-im...
MySQL: mysqlimport или LOAD DATA INFILE
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы