Frage

Ich weiß, dass mit mysql Sie SQL-Anweisungen in eine SQL-Datei schreiben und die Datei aus dem mysql Befehlszeile wie folgt ausgeführt werden:

mysql> source script.sql

Wie gebe ich eine Variable, um das Skript? Zum Beispiel, wenn ich ein Skript ausgeführt werden soll, dass alle Mitarbeiter einer Abteilung abruft, möchte ich in der Lage sein, in der Anzahl der Abteilung passieren als eine Variable.

Ich versuche nicht, Abfragen über einen Shell-Skript auszuführen. Es gibt einfache Abfragen ich von der MySQL-Befehlszeile ausführen. Ich bin müde sie die ganze Zeit für das Abtippen und Schreiben ein Shell-Skript für sie wäre übertrieben.

War es hilfreich?

Lösung

Wie folgt aus:

set @department := 'Engineering';

Dann Referenz @department wo immer Sie brauchen, um in script.sql:

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

Andere Tipps

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

Sie können das gesamte Konzept wiederverwenden von aus dem folgenden Projekt

Sie sollten wirklich auf einem geeigneteren Weg suchen, dies zu tun. Ich gehe zu erraten, dass Sie MySQL-Abfragen über eine Shell-Skript auszuführen versuchen. Sie sollten stattdessen so etwas wie Perl oder PHP werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top