Pregunta

Sé que con mysql puedes escribir sentencias SQL en un archivo .sql y ejecutar el archivo desde la línea de comando de mysql de esta manera:

mysql> source script.sql

¿Cómo paso una variable al script?Por ejemplo, si quiero ejecutar un script que recupere todos los empleados de un departamento, quiero poder pasar el número del departamento como una variable.

No estoy intentando ejecutar consultas a través de un script de shell.Hay consultas simples que ejecuto desde la línea de comando de MySQL.Estoy cansado de volver a escribirlos todo el tiempo y escribir un script de shell para ellos sería excesivo.

¿Fue útil?

Solución

Como esto:

set @department := 'Engineering';

Entonces, referencia @department donde sea necesario en script.sql:

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

Otros consejos

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

puedes reutilizar todo el concepto desde del siguiente proyecto

Realmente deberías buscar una forma más apropiada de hacer esto.Supongo que estás intentando ejecutar consultas MySQL a través de un script de shell.en su lugar deberías utilizar algo como PERL o PHP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top