Bewerken: Gegevens (bijv. een tabel) opslaan in een bestand zonder variabele te gebruiken (alleen constante waarden)
-- 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;
Nu variabele gebruiken
Wanneer u een variabelenaam in sql moet gebruiken, hebt u dynamische sql nodig (die alleen van toepassing is in opgeslagen procedures, niet in eenvoudige SQL-query's, noch in triggers of functies)
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;
Omdat je beide '
. had en "
al in uw zoekopdracht, dus ik heb uw zoekopdracht samengevoegd met "
en gebruikte \ om te ontsnappen aan uw oorspronkelijke "
om ervoor te zorgen dat het letterlijk wordt gebruikt en niet wordt gebruikt voor aaneenschakeling
Ik heb zojuist het gebruik van variable
verteld in sql. Eerst moet u ervoor zorgen dat uw zoekopdracht werkt zoals het voorbeeld bovenaan (zonder variabele te gebruiken)
Conclusie: Als je bovenstaande query goed werkt, zal mijn vertelde dynamische sql ook werken, aangezien je het in een of andere opgeslagen procedure gebruikt.