編集: 変数(定数値のみ)を使用せずにデータ(テーブルなど)をファイルに保存する
-- 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;
現在、変数を使用
sqlで変数名を使用する必要がある場合は常に、動的sqlが必要です(これは、ストアドプロシージャにのみ適用可能であり、単純なsqlクエリにもトリガーや関数にも適用できません)
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;
両方の'
があったので および"
クエリにすでに含まれているので、"
を使用してクエリを連結しました 元の"
をエスケープするために\を使用しました リテラル文字として使用し、連結には使用しないようにするため
variable
の使用について説明しました SQLで。まず、クエリが上部の例のように機能するかどうかを確認する必要があります (変数を使用せずに)
結論: 上記のクエリが正常に機能する場合は、ストアドプロシージャで使用している場合は、私の指示した動的SQLも機能します。