SQL запрос для экспорта в CSV

Опубликовано: Комментариев: 0

Нужно было сделать MySQL запрос для экспорта всех товаров и фоток к ним из самописного движка в CSV, чтобы потом импортировать в OpenCart. Фотографии к товару хранились в таблице photos в виде: id id_товара и имя_фотографии. Я же захотел, чтобы в конечном файле все фотки были в одной ячейке через ;. Для этого заюзал GROUP_CONCAT во временную таблицу, а потом заджойнил к основной свою временную. Потом столкнулся с бедой, что phpMyAdmin не хотел экспортировать результаты запроса, пришлось допилить запись файла CSV в папку /tmp/. Вот сам запрос


-- Поднимаю лимит для GROUP_CONTACT
SET SESSION group_concat_max_len = 99000000;

-- Создаю врем. таблицу с фотками
CREATE TEMPORARY TABLE temp_photos
AS SELECT id, item_id, GROUP_CONCAT(`item_photo` SEPARATOR ';') AS `photos`
FROM photos
GROUP BY item_id;

-- Итоговый результат
SELECT tb.*, date(tb.created) AS date_available, tb3.item_photo, tb2.photos FROM items tb
LEFT JOIN temp_photos AS tb2 ON tb.item_id=tb2.item_id
LEFT JOIN photos AS tb3 ON tb.thumb_id = tb3.id

INTO OUTFILE '/tmp/results.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\\n';