24

我知道使用 mysql 您可以将 SQL 语句写入 .sql 文件并从 mysql 命令行运行该文件,如下所示:

mysql> source script.sql

如何将变量传递给脚本?例如,如果我想运行一个脚本来检索部门中的所有员工,我希望能够将部门编号作为变量传递。

我不想通过 shell 脚本运行查询。我从 mysql 命令行运行了一些简单的查询。我厌倦了一直重新输入它们,为它们编写一个 shell 脚本将是矫枉过正的。

4

3 回答 3

22

像这样:

set @department := 'Engineering';

然后,@department在 script.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

你真的应该寻找一种更合适的方式来做到这一点。我猜你正在尝试通过 shell 脚本运行 mysql 查询。您应该改用 PERL 或 PHP 之类的东西。

于 2008-09-16T19:59:04.210 回答