Pergunta

Eu sei que com o mysql você pode escrever instruções SQL em um arquivo .sql e executar o arquivo na linha de comando do mysql assim:

mysql> source script.sql

Como passo uma variável para o script?Por exemplo, se eu quiser executar um script que recupere todos os funcionários de um departamento, quero poder passar o número do departamento como uma variável.

Não estou tentando executar consultas por meio de um script de shell.Existem consultas simples que executo na linha de comando do mysql.Estou cansado de digitá-los novamente o tempo todo, e escrever um script de shell para eles seria um exagero.

Foi útil?

Solução

Assim:

set @department := 'Engineering';

Então, referência @department onde quer que você precise em script.sql:

update employee set salary = salary + 10000 where department = @department;

Outras dicas

    #!/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

você pode reutilizar todo o conceito de do seguinte projeto

você realmente deveria procurar uma maneira mais apropriada de fazer isso.Suponho que você esteja tentando executar consultas MySQL por meio de um script de shell.você deveria usar algo como PERL ou PHP.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top