将参数传递给MySQL脚本命令行

问题描述:

是否有任何选项将参数从命令行传递到MySQL脚本?将参数传递给MySQL脚本命令行

事情是@start_date在这个例子:

mysql –uuser_id -ppassword –h mysql-host -A -e 
"set @start_date=${start_date}; source ${sql_script};" >${data_file}; 
+0

@Kaii他很可能在寻找类似于“SQL Server的SQLCMD支持'-v'选项]的脚本变量”(http://msdn.microsoft.com/zh-cn/library/ms162773的.aspx)。 – 2012-04-23 16:28:39

发现在网络上here答案。

基本上,假设我们要运行这个查询:

Select c_id, c_first_name,c_last_name, c_address,last_modified_date 
from customer 
where last_modified_date >[email protected]_date and last_modified_date <= @end_date; 

我们可以通过 '起始日期' 和 'END_DATE' 这样的:

/usr/bin/mysql –uuser_id -ppassword –h mysql-host -A \ 
    -e "set @start_date=${start_date}; set @end_date=${end_date};\ 
     source ${sql_script};" > ${data_file} 
+0

值得注意的是,它是扩展这个变量的shell,所以这个答案意味着一个* nix shell。 – sastorsl 2016-01-05 10:12:30

的 “-e” 选项是明智的所使用的报价,请尝试双引号:

mysql –uuser_id -ppassword –h mysql-host -A -e 
"set @start_date=\"$start_date\"; source \"$sql_script\";" >\"$data_file\";" 

简短的回答:

庆典:

 mysql -u"$mysql_user" -p"$mysql_user_pw" \ 
     -e "set @mysql_db='$mysql_db';source \ 
     00.create-mysql-starter-db.mysql ;" > "$tmp_log_file" 2>&1 

的mysql:

 SET @query = CONCAT('CREATE DATABASE /*!32312 IF NOT EXISTS*/ `' 
    , @mysql_db , '` /*!40100 DEFAULT CHARACTER SET utf8 */') ; 
    -- SELECT 'RUNNING THE FOLLOWING query : ' , @query ; 
     PREPARE stmt FROM @query; 
     EXECUTE stmt; 
     DEALLOCATE PREPARE stmt; 

长的答案: 整个概念作为一个可运行的bash,MySQL的应用:

https://github.com/YordanGeorgiev/mysql-starter

git clone [email protected]:YordanGeorgiev/mysql-starter.git