Появилась такая задачка: импорт в БД данных из CSV-файла. CSV представляет собой ненормализованную табличку, он прилетает из другого приложения и на его формат я повлиять никак не могу. БД нормальзована, поэтому вариант с LOAD DATA INFILE, наверное, не подойдет.
Условно, БД выглядит так:
CREATE TABLE `clients` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`email` VARCHAR(30) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE `index_clients_names` (`name`)
) ENGINE = InnoDB;
CREATE TABLE `products` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`price` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE `index_products_names` (`name`)
) ENGINE = InnoDB;
CREATE TABLE `orders` (
`id` INT NOT NULL AUTO_INCREMENT,
`client` INT NOT NULL,
`product` INT NOT NULL,
`date_time` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE `index_order_datetime` (`date_time`)
) ENGINE = InnoDB;
CSV-файл:
John Ridger;Paper;30;2018/10/7 5:23:54 AM
Василий Кормушкин;Notebook;8;2018/10/7 8:44:28 AM
Alice McCollin;Glue;5;2018/10/7 11:9:14 AM
...
Сначала мне нужно добавить недостающие поля (если таковых ранее не было в БД) в таблички clients и products, потом уже вносить данные в orders.
Соответственно, возник вопрос - как это сделать оптимально (и с т.з. производительности/нагрузки на СУБД, и с т.з. удобства кода (используется РНР7)).
В голову приходят такие варианты:
Больше ничего в голову не приходит, посему хотелось бы узнать мнение более опытных в этом деле людей.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть роут вывода товаров с переменной $id категории, которую надо передать через посредник в контроллер и вывести товарыПосредник проверяет...