2008-09-16 16 views
21

mysql ile SQL deyimlerini bir .sql dosyasına yazıp mysql komut satırından şu şekilde çalıştırabilirsiniz:Bir değişkeni mysql betiğine nasıl geçirebilirim?

mysql> source script.sql 

Bir değişkeni betiğe nasıl iletebilirim? Örneğin, bir departmandaki tüm çalışanları alan bir betik çalıştırmak istiyorsam, bölümün sayısının değişken olarak geçmesini istiyorum.

Bir kabuk komut dosyasıyla sorgu çalıştırmaya çalışmıyorum. Mysql komut satırından çalıştırdığım basit sorgular var. Onları her zaman yeniden yazmaktan yoruldum ve onlar için bir kabuk senaryosu yazmak aşırı olacaktı.

cevap

17

:

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

gerçekten bunu yapmanın daha uygun bir şekilde bakarak edilmelidir:

set @department := 'Engineering'; 

Sonra referans @department her yerde de script.sql gerekir. Bir kabuk komut dosyasıyla mysql sorgularını çalıştırmaya çalıştığınızı tahmin edeceğim. Bunun yerine PERL veya PHP gibi bir şey kullanmalısınız.

10
#!/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 isg_pub_en MetaEntity 
    # 
    #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 

Eğer from the following project

gelen bütün kavramı yeniden kullanabilirsiniz
İlgili konular