Sunting: Menyimpan data (misalnya tabel) ke dalam file tanpa menggunakan variabel (hanya nilai konstan)
-- 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;
Sekarang menggunakan variabel
Kapan pun Anda harus menggunakan nama variabel dalam sql, Anda memerlukan sql dinamis (yang hanya berlaku dalam prosedur tersimpan, baik dalam kueri sql sederhana maupun dalam pemicu atau fungsi)
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;
Karena Anda memiliki keduanya '
dan "
dalam kueri Anda, jadi saya menggabungkan kueri Anda menggunakan "
dan menggunakan \ untuk keluar dari "
original asli Anda untuk memastikan penggunaannya sebagai karakter literal dan tidak digunakan untuk penggabungan
Saya baru saja memberi tahu penggunaan variable
di sql. Pertama Anda harus memastikan apakah kueri Anda berfungsi seperti contoh di atas (tanpa menggunakan variabel)
Kesimpulan: Jika kueri Anda di atas berfungsi dengan baik, maka sql dinamis yang saya beri tahu akan berfungsi dengan baik mengingat Anda menggunakannya dalam beberapa prosedur tersimpan.