MySql: загрузить файл данных, временные столбцы

У меня есть следующая структура данных в файле .CSV:

Name       Month1     Month2     Month3
Name1       40          20         10
Name2       14          10         11

Мне нужно загрузить эти данные в следующую структуру

Name    Month   Value
Name1    1       40
Name1    2       20
...

Моя идея - выполнить файл данных загрузки внутри цикла. В первый раз читать только информацию о месяце 1, во второй раз загружать только информацию о месяце 2 и далее.

Код моего файла данных загрузки будет примерно таким:

LOAD DATA LOCAL INFILE '/file.csv' 
INTO TABLE demo.test
FIELDS TERMINATED BY ';'                
OPTIONALLY ENCLOSED BY '"'              
LINES TERMINATED BY '\n' 
IGNORE 1 LINES  
(NAME, @var1, @var2, @var3)
SET QTD = @var1;

Есть ли способ определить @ var1 динамически? Таким образом, для первого взаимодействия временная переменная, используемая для определения QTD, будет «var1», для второго взаимодействия будет «var2» и т. д.

С уважением,

Да, конечно возможно с петлей WHILE (dev.mysql.com/doc/refman/8.0/en/ while.html). Вы также можете просто загрузить файл CSV в промежуточную таблицу как есть и использовать INSERT INTO для заполнения окончательных таблиц (dev.mysql.com/doc/refman/8.0/en/…)

jspcal 03.07.2018 23:24

2-й вариант в предыдущем комментарии. Не делайте первое ... намного медленнее.

Bleach 03.07.2018 23:36

Jup вам нужно использовать промежуточную таблицу, в которую вы импортируете таблицу, и используйте метод unpivot или столбец для записи преобразования (используйте UNION ALL), поэтому вам нужно два запроса для этого .... Или вы создаете собственный синтаксический анализатор CVS с MySQL LOAD_FILE ( ) (dev.mysql.com/doc/refman/8.0/en/…) в сочетании с некоторыми генераторами чисел SQL и вложенными функциями SUBSTRING_INDEX, чтобы вы могли разделить записи и столбцы из этого файла CVS, который вы используете в качестве доставленной таблицы для запроса INSERT INTO ... SELECT ..

Raymond Nijland 04.07.2018 00:11
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
57
0

Другие вопросы по теме