Come posso passare una variabile a uno script mysql?
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.
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.