Есть огромная база в excel. Знаю, что можно тупо сохранить файл в csv и импортировать его в базу данных mysql. Но мне нужно разбить её на части. Условно линия выглядит так: производитель, имя товара, его характеристики. В таблице около 20к записей. Производитель и товар могут дублироваться много раз имея разные характеристики. Я хочу разбить это на три таблицы в mysql - company, product, characteristic. Для оптимизации убрать дубликаты - производителя и имени товара. Понимаю, что мне нужно привязать по id характеристики товара к названию товара, а название товара привязать по id к производителю. Сразу хочу сказать, что в mysql не силен. Выгрузить таблицу я могу. Как мне привязать всё по id между собой? Прошу пример, как это можно сделать с ссылкой на материал. Заранее спасибо.
До загрузки в БД вам надо привести данные в Excel. Это два разных процесса - нормализация данных и загрузка в MySql. Нормализировать данные в Excel можно таким образом:
Повторите этот алгоритм для всех полей которые хотите вынести.
Как мне привязать всё по id между собой?
Покажу на примере двух таблиц.
Пусть есть некий набор данных, вываленный в file.csv.
Создаём под них временную таблицу, и импортируем:
LOAD DATA INFILE "file.csv"
INTO TABLE temptable (full_fieldset);
Далее начинаем заполнять рабочие таблицы данными от корня дерева связей.
CREATE TABLE maintable (id_main SERIAL PRIMARY KEY,
main_fieldset);
INSERT INTO maintable (main_fieldset)
SELECT DISTINCT main_fieldset FROM temptable;
После её заполнения дубли отсеяны, и каждая уникальная запись получила свой уникальный синтетический индекс.
Теперь заполняем зависимую таблицу. Данные берём из временной, а индекс для связи - из ведущей:
CREATE TABLE slavetable (id_slave SERIAL PRIMARY KEY,
slave_fieldset,
id_main BIGINT,
FOREIGN KEY (id_main) REFERENCES maintable (id_main));
INSERT INTO slavetable (slave_fieldset, id_main)
SELECT temptable.fieldset, maintable.id_main
FROM temptable
NATURAL JOIN maintable;
И, собственно, всё...
Для упрощения процесса программирования весьма желательно соблюдать уникальность имён полей в пределах рабочего набора таблиц и соответствие имён полей во временной и рабочих таблицах. Т.е. в таблицах назначения одноимёнными являются только поля, по которым таблицы связываются, все остальные уникальны. Это позволяет использовать NATURAL JOIN и не составлять длинный список равенств в секции ON
.
Убрал дубликаты компаний и записал их в новую таблицу. Сравнил id во временной(общей) таблице с таблицей компаний(без дубликатов). SELECT id FROM temp INNER JOIN company ON temp.companytemp = company.cname
. Записал id в models.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
подскажите, пожалуйста: Есть таблица
есть 3 скрипта асинхронных, и каждый ждет другого, но выполняется он 1 минуту, и потом ничего не происходит, что и как поправитьЯ использую...
Какой самый лучший в VUE способ изменять видимость div в элементе li, который генерируется v-for ? Проблема в том, что приходят на ум какие то уж очень...
Возникла проблема в решении задачи из codeWarsСперва условие: