Problema con la creación y la adición de los datos en un archivo de texto en MySQL?

AlfaCoding:

He creado el siguiente procedimiento que el uso de dos diferentes declaraciones preparadas, escribe algunos datos en un archivo de texto con el mismo nombre.

PROCEDIMIENTO

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: ' 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: ' terminated by '\n';");
    prepare stmt2 from @aux2;
    execute stmt2;
    deallocate prepare stmt2;

    delete from movie_modification;
end !!
delimiter ;

Cuando ejecuta este procedimiento, la declaración aux1se ejecuta correctamente y crea el archivo de texto y escribe los datos en ella. Pero cuando la ejecución pasa a la segunda declaración ( aux2), me sale el siguiente error:

Código de error: 1086. El archivo 'C: / Datos de programa / MySQL / MySQL Server / uploads / 2020-04-03.txt 5,7' ya existe

Este error se produce porque el archivo ya se está creando en la declaración aux1.

¿Cómo puedo modificar entonces la segunda declaración aux2sabiendo el archivo ya se ha creado?

RiggsFolly:

No creo que se puede pedir a MySQL para anexar al mismo archivo, pero se podía UNIÓN las 2 consultas.

Puede añadir el 'Edit: 'y 'New: 'en la consulta, por lo tanto, lo que permite utilizar un UNION para reducir esto a una consulta.

Puede que tenga que cambiar su consulta para especificar todas las columnas que desea una SELECT 'Edit: ',*costumbre trabajo, pero aquí hay una sugerencia.

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 @aux = concat("select 'Edit: ', col1,col2 from movie_modification where modified = true
                    UNION ALL
                    select 'New: ', col1,col2 from movie_modification where modified = false
                 into outfile ", path, 
                 " fields terminated by ';' lines terminated by '\n';");

    prepare stmt from @aux;
    execute stmt;

    deallocate prepare stmt;
    delete from movie_modification;
end !!
delimiter ;

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=402286&siteId=1
Recomendado
Clasificación