Могу ли я использовать 'LINES STARTING BY' и 'LINES TERMINATED BY' для одного и того же запроса в MySQL? - PullRequest
1 голос
/ 03 апреля 2020

Я работаю над процедурой, которая копирует некоторые данные в текстовый файл с использованием двух подготовленных операторов (@aux1 и @aux2). Затем таблица, в которую копируется информация, получает все ее строки.

Проблема в том, что когда я выполняю процедуру, используя call copyIntoFile(), я получаю сообщение об ошибке.

ПРОЦЕДУРА

delimiter !!
drop procedure if exists copyIntoFile !!
create procedure copyIntoFile()

begin
    declare path varchar(255);
    set path = concat("'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/", curdate(), ".txt'");

    set @aux1 = concat("select * from movie_modification where modified = true into outfile ", path, 
                        " fields terminated by ';' lines starting by 'Edit: ' lines terminated by '\n';");
    prepare stmt1 from @aux1;
    execute stmt1;
    deallocate prepare stmt1;

    set @aux2 = concat("select * from movie_modification where modified = false into outfile ", path, 
                        " fields terminated by ';' lines starting by 'New: ' lines terminated by '\n';");
    prepare stmt2 from @aux2;
    execute stmt2;
    deallocate prepare stmt2;

    delete from movie_modification;
end !!
delimiter ;

ОШИБКА (при выполнении процедуры)

Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей MySQL версии сервера, на предмет правильного синтаксиса для использования рядом с «строками, оканчивающимися на« »в строке 1

Как видите, ошибка возникает около lines terminated by (в строке 1). Так что теперь мне интересно, могу ли я использовать lines terminated by после lines starting by или только одно из этих утверждений принимается в каждом запросе.

Что не так?

1 Ответ

1 голос
/ 03 апреля 2020

Я думаю, вам нужно заменить это:

select ...
into outfile ...
fields terminated by ';' lines starting by 'Edit: ' lines terminated by '\n'

На:

select ...
into outfile ...
fields terminated by ';' lines starting by 'Edit: ' terminated by '\n'

То есть: ключевое слово lines не должно повторяться.

...