sql >> Database >  >> RDS >> Mysql

kan ik een variabele gebruiken om OUTFILE op te geven in mysql

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.



  1. PostgreSQL onjuiste sortering

  2. Divisie ( / ) geeft mijn antwoord niet in postgresql

  3. Ontvang datums van een weeknummer in T-SQL

  4. Quick and Dirty For Loops in het onmiddellijke venster