32

コマンドラインからMySQLスクリプトにパラメータを渡すオプションはありますか?

この例の@start_dateのようなもの:

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

4 に答える 4

40

ここでネット上で答えを見つけました。

基本的に、このクエリを実行するとします。

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;

次のように「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}
于 2012-04-22T05:49:37.633 に答える
2

簡単な答え:

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:

     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 git@github.com:YordanGeorgiev/mysql-starter.git
于 2016-09-24T10:56:42.413 に答える
0

「-e」オプションは、使用する引用符に適しています。二重引用符を試してください。

mysql –uuser_id -ppassword –h mysql-host -A -e 
"set @start_date=\"$start_date\"; source \"$sql_script\";" >\"$data_file\";"
于 2015-10-06T15:31:36.627 に答える
-1

スクリプトを一緒に作成して、事前定義されたさまざまな引数を使用してSQLコードを実行することにより、bashコードを回避できる場合があります。

例えば:

do-something-production.sql

USE mydb-prod;
SET @arg=5;
SOURCE do-something.sql;

do-something-test.sql

USE mydb-test;
SET @arg=10;
SOURCE do-something.sql;

do-something.sql

UPDATE table SET col = (SELECT @arg);
于 2021-04-06T18:39:43.137 に答える