@ivapbox

Как сделать разными имена файлов при INTO OUTFILE?

У меня есть таблица _test, + триггер, который должен после добавления новой записи в таблицу _test скидывать эту информацию в файл. Каждая новая запись - отдельный файл.
CREATE TRIGGER `update_test` AFTER INSERT ON `_test`
FOR EACH ROW BEGIN
  SELECT *
          FROM _test
          ORDER BY id
          DESC LIMIT 1
          INTO OUTFILE 'export.csv'
          CHARACTER SET cp1251 FIELDS TERMINATED BY ';' ENCLOSED BY '' LINES TERMINATED BY '\n';
END;


Имеем таблицу _test с полями "id, value".
Необходимо при каждом создании файла делать его имя уникальным. Как-то нужно внести фикс в этой строчке: INTO OUTFILE 'export.csv'
В идеале - добавлять в название id новосозданной записи (см. код выше). Пример: export_12321.csv, где 12321 - id новой записи в _test.
  • Вопрос задан
  • 274 просмотра
Пригласить эксперта
Ответы на вопрос 1
@ivapbox Автор вопроса
Вот что еще накопал:
CREATE TRIGGER `update_test` AFTER INSERT ON `_test`
FOR EACH ROW BEGIN
  SET @iid = (SELECT value FROM _test ORDER BY id DESC LIMIT 1);
  SET @filepath = CONCAT(@iid, '.csv');
  SELECT *
          FROM _test
          ORDER BY id
          DESC LIMIT 1
          INTO OUTFILE @filepath

          CHARACTER SET cp1251 FIELDS TERMINATED BY ';' ENCLOSED BY '' LINES TERMINATED BY '\n';

END;


Создание переменной @filepath. Но я что-то упускаю:
[42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@filepath CHARACTER SET cp1251 FIELDS TERMINATED BY ';' ENCLOSED BY '' at line 9
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы