Мне нужно вставить огромный CSV файл в 2 таблицы с соотношением 1: n в базе данных mySQL.
CSV файл поступает еженедельно и имеет около 1 ГБ, что необходимо добавить к существующим данным. Каждая из двух таблиц имеет первичный ключ Auto increment.
Я пробовал:
- Entity Framework (занимает большинство времени всех подходов)
- Наборы данных (такие же)
- Массовая загрузка (не поддерживает несколько таблиц)
- MySqlCommand с параметрами (должен быть вложен, мой текущий подход)
- MySqlCommand со StoredProcedure, включая транзакцию
Другие предложения?
Пусть упрощенно это моя структура данных:
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<string> Codes { get; set; }
}
Мне нужно вставить из csv в эту базу данных:
User (1-n) Code
+---+-----+-----+ +---+---+-----+
|PID|FName|LName| |CID|PID|Code |
+---+-----+-----+ +---+---+-----+
| 1 |Jon | Foo | | 1 | 1 | ed3 |
| 2 |Max | Foo | | 2 | 1 | wst |
| 3 |Paul | Foo | | 3 | 2 | xsd |
+---+-----+-----+ +---+---+-----+
Здесь пример строки CSV файла
Jon;Foo;ed3,wst
A Массовая загрузка, например LOAD DATA LOCAL INFILE
, невозможна, потому что у меня ограниченные права на запись