joh*_*wie 14 mysql sql variables
有没有办法做以下的事情?这不起作用,但显示我想做的事情
SET @OutputPath = '/Users/jo/Documents'
SET @fullOutputPath = CONCAT(@OutputPath,'/','filename.csv')
SET @fullOutputPath2 = CONCAT(@OutputPath,'/','filename2.csv')
SELECT * INTO OUTFILE @fullOutputPath
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM database.tableName;
SELECT * INTO OUTFILE @fullOutputPath2
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
FROM database.tableName2;
Run Code Online (Sandbox Code Playgroud)
Sam*_*ami 27
编辑:将数据(例如表格)保存到文件中而不使用变量(仅限常量值)
-- 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;
Run Code Online (Sandbox Code Playgroud)
现在使用变量
无论何时必须在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;
Run Code Online (Sandbox Code Playgroud)
当你有两个'
,并"
在查询了,所以我用串联您的查询"
和使用\逃避你原来"
以确保其作为文字字符使用,不能用于级联
我只是告诉variable
在sql中使用.首先您应该确保您的查询在顶部是否像示例一样工作(不使用变量)
结论:如果您的上述查询工作正常,那么我告诉动态sql也可以正常工作,因为您在某些存储过程中使用它.
Sha*_*oor -1
你不能在 mysql CLI 中执行此操作,但以这种方式它可以工作
mysql -e "SELECT * FROM database.tableName;" -u user -p database > filename.csv
Run Code Online (Sandbox Code Playgroud)