MySQL Группировать по столбцам, а затем извлекать каждую группу в файл .csv?

0

Например, скажем, у меня есть таблица (скажем, столбцы: [letter, color, number]):

a|green |2
b|blue  |3
a|red   |3
a|blue  |4
b|yellow|1
c|red   |9
c|blue  |5

Во-первых, я хочу сгруппировать/упорядочить их по первому столбцу, чтобы он:

a|green |2
a|red   |3
a|blue  |4
b|blue  |3
b|yellow|1
c|red   |9
c|blue  |5

Наконец, я хочу извлечь каждую группу в отдельные файлы.csv:

a.csv
a|green |2
a|red   |3
a|blue  |4

b.csv
b|blue  |3
b|yellow|1


c.csv
c|red   |9
c|blue  |5

Спасибо!

edit: как сохранить новые строки? Это не отображается правильно edit2: спасибо за исправление!

  • 0
    Ваш первый шаг - просто упорядочить их, а не группировать.
  • 0
    Используйте Ctl-k или инструмент кода {} , чтобы отметить код, который должен отображаться буквально.
Показать ещё 3 комментария
Теги:
csv

1 ответ

0
Лучший ответ

Используйте SELECT... INTO OUTFILE... для каждого значения первого столбца.

SELECT *
INTO OUTFILE 'a.csv'
FROM yourTable
WHERE col1 = 'a';

SELECT *
INTO OUTFILE 'b.csv'
FROM yourTable
WHERE col1 = 'b';

и так далее.

Если вам нужно сделать это динамически для неизвестного набора значений, вы можете написать хранимую процедуру, которая будет проходить через результат

SELECT DISTINCT col1
FROM yourTable;

Он должен будет генерировать динамический SQL с соответствующим именем файла в нем для каждого запроса, используя PREPARE и EXECUTE.

  • 0
    Спасибо вам большое! Не могли бы вы объяснить второй более подробно, пожалуйста? У меня есть огромный набор данных со многими различными значениями столбцов
  • 0
    Я думаю, что описал это довольно четко. Я не уверен, как идти дальше без написания кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню