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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10229324/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 13:01:53  来源:igfitidea点击:

Pass parameter to MySQL script command line

mysqlcmd

提问by danieln

Is there any option to pass a parameter from the command line to MySQL script?

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

Something like @start_date in this example:

在这个例子中像@start_date 这样的东西:

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

回答by danieln

Found an answer on the net here.

这里在网上找到了答案。

Basically, suppose that we want to run this query:

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

Select c_id, c_first_name,c_last_name, c_address,last_modified_date
from customer
where last_modified_date >=@start_date and last_modified_date <= @end_date;

We can pass 'start_date' and 'end_date' like this:

我们可以像这样传递 'start_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}

回答by Yordan Georgiev

The Short answer:

简短的回答:

bash :

重击:

        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:

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;

The Long answer : The whole concept as a runnable bash , mysql app :

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

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

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

or

或者

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

回答by crmeye

The "-e" option is sensible to the used quotes, try the double quote:

"-e" 选项对使用的引号很合理,试试双引号:

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