24

mysql を使用すると、SQL ステートメントを .sql ファイルに書き込んで、次のように mysql コマンド ラインからファイルを実行できることを知っています。

mysql> source script.sql

変数をスクリプトに渡すにはどうすればよいですか? たとえば、部門内のすべての従業員を取得するスクリプトを実行する場合、部門の番号を変数として渡すことができるようにしたいと考えています。

シェル スクリプトを使用してクエリを実行しようとしているわけではありません。mysql コマンド ラインから実行する簡単なクエリがあります。私はいつもそれらを再入力するのにうんざりしていて、それらのためにシェルスクリプトを書くのはやり過ぎです.

4

3 に答える 3

22

このような:

set @department := 'Engineering';

次に、@departmentscript.sql で必要な場所を参照します。

update employee set salary = salary + 10000 where department = @department;
于 2008-09-16T19:40:53.850 に答える
22
    #!/bin/bash

    #verify the passed params
    echo 1 cmd arg : $1
    echo 2 cmd arg : $2

    export db=$1
    export tbl=$2

    #set the params ... Note the quotes ( needed for non-numeric values )
    mysql -uroot -pMySecretPaassword \
    -e "set @db='${db}';set @tbl='${tbl}';source run.sql ;" ;

    #usage: bash run.sh my_db my_table
    #
    #eof file: run.sh

    --file:run.sql

    SET @query = CONCAT('Select * FROM ', @db , '.' , @tbl ) ;
    SELECT 'RUNNING THE FOLLOWING query : ' , @query ;
    PREPARE stmt FROM @query;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

    --eof file: run.sql

次のプロジェクトのコンセプト全体を再利用できます

于 2014-08-03T21:14:23.570 に答える
-15

これを行うためのより適切な方法を検討する必要があります。シェル スクリプトを介して mysql クエリを実行しようとしていると思います。代わりに、PERL や PHP などを使用する必要があります。

于 2008-09-16T19:59:04.210 に答える