Domanda

So che con mysql puoi scrivere istruzioni SQL in un file .sql ed eseguire il file dalla riga di comando mysql in questo modo:

mysql> source script.sql

Come passo una variabile allo script?Ad esempio, se voglio eseguire uno script che recuperi tutti i dipendenti di un dipartimento, voglio poter passare il numero del dipartimento come variabile.

Non sto cercando di eseguire query tramite uno script di shell.Ci sono semplici query che eseguo dalla riga di comando di mysql.Sono stanco di riscriverli continuamente e scrivere uno script di shell per loro sarebbe eccessivo.

È stato utile?

Soluzione

Come questo:

set @department := 'Engineering';

Quindi, riferimento @department ovunque sia necessario in script.sql:

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

Altri suggerimenti

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

puoi riutilizzare l'intero concetto da dal seguente progetto

dovresti davvero cercare un modo più appropriato per farlo.Immagino che tu stia provando a eseguire query mysql tramite uno script di shell.dovresti invece usare qualcosa come PERL o PHP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top