sql >> Database teknologi >  >> RDS >> Mysql

kan jeg bruge en variabel til at angive OUTFILE i mysql

Rediger: Lagring af data (f.eks. en tabel) i fil uden brug af variabel (kun konstante værdier)

-- 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;

Bruger nu variabel

Når du skal bruge et variabelnavn i sql, har du brug for dynamisk sql (som kun gælder i lagrede procedurer, hverken i simpel sql-forespørgsel eller i triggere 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;

Da du havde både ' og " allerede i din forespørgsel, så jeg sammenkædede din forespørgsel ved hjælp af " og brugte \ til at undslippe din originale " for at sikre dets brug som en bogstavelig karakter og ikke brugt til sammenkædning

Jeg har lige fortalt brugen af ​​variable i sql. Først skal du sikre dig, om din forespørgsel fungerer som eksempel øverst (uden at bruge variabel)

Konklusion: Hvis din ovenstående forespørgsel fungerer fint, vil min fortalte dynamiske sql fungere lige så godt, da du bruger den i en lagret procedure.



  1. sql gruppe efter versus distinkt

  2. PostgreSQL-forespørgsel til at tælle/gruppere efter dag og vise dage uden data

  3. hvordan tilføjer man brugerdefineret adapter til aktiviteten for at få listen til at blive vist i aktiviteten?

  4. Fejlfind en fejl, når du forsøger at oprette en stor IMDB-model