Upravit: Ukládání dat (např. tabulky) do souboru bez použití proměnné (pouze konstantní hodnoty)
-- folder_path could could be like => c:/users/sami
-- choose the directory/folder already available in system
-- and make sure you have access to write the file there
SELECT * INTO OUTFILE 'folder_path/filename.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM database.tableName;
Nyní pomocí proměnné
Kdykoli musíte použít název proměnné v sql, potřebujete dynamické sql (které lze použít pouze v uložených procedurách, ani v jednoduchém dotazu sql, ani v triggerech nebo funkcích)
SET @OutputPath := 'Users/jo/Documents'; //or any folder_path
SET @fullOutputPath := CONCAT(@OutputPath,'/','filename.csv');
SET @fullOutputPath2 := CONCAT(@OutputPath,'/','filename2.csv');
set @q1 := concat("SELECT * INTO OUTFILE ",@fullOutputPath,
" FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
FROM database.tableName");
set @q2 := concat("SELECT * INTO OUTFILE ",@fullOutputPath2,
" FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
FROM database.tableName2");
prepare s1 from @q1;
execute s1;deallocate prepare s1;
prepare s1 from @q2;
execute s1;deallocate prepare s1;
Jak jste měli oba '
a "
již ve vašem dotazu, takže jsem váš dotaz zřetězil pomocí "
a použil \ k opuštění původního "
aby bylo zajištěno jeho použití jako doslovného znaku a nikoli pro zřetězení
Právě jsem řekl použití variable
v sql. Nejprve byste se měli ujistit, zda váš dotaz funguje jako příklad nahoře (bez použití proměnné)
Závěr: Pokud váš výše uvedený dotaz funguje dobře, můj sdělený dynamický sql bude fungovat také, protože jej používáte v nějaké uložené proceduře.