sql >> Databasteknik >  >> RDS >> Mysql

kan jag använda en variabel för att specificera OUTFILE i mysql

Redigera: Spara data (t.ex. en tabell) i fil utan att använda variabel (endast konstanta värden)

-- 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 använder variabel

När du måste använda ett variabelnamn i sql behöver du dynamisk sql (som endast är tillämpligt i lagrade procedurer, varken i enkel sql-fråga eller i triggers eller funktioner)

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;

Eftersom du hade både ' och " redan i din fråga, så jag sammanfogade din fråga med " och använde \ för att undkomma din ursprungliga " för att säkerställa att den används som en bokstavlig karaktär och inte används för sammanlänkning

Jag berättade precis användningen av variable i sql. Först bör du se till om din fråga fungerar som exempel överst (utan att använda variabel)

Slutsats: Om din fråga ovan fungerar bra så kommer min berättade dynamiska sql att fungera lika bra med tanke på att du använder den i någon lagrad procedur.



  1. Hur man automatiskt hanterar failover i MySQL-databasen för Moodle

  2. Fix Msg 241 "Konvertering misslyckades vid konvertering av datum och/eller tid från teckensträng" i SQL Server

  3. Hur SYS_GUID() fungerar i MariaDB

  4. MySQL COUNT med LIMIT