2016-06-27 2 views
0

Ich habe eine Reihe von MySQL-Skripten, die name1 als den Datenbanknamen verwenden und diese Datenbank mit meinen Daten füllen. Ich möchte jedoch in der Lage sein, den Namen der Datenbank zu wählen, anstatt sie in meinen SQL-Skripten überall zu benennen. name1.Wie man eine Variable von einem Shell-Skript an ein Mysql-Skript übergibt

Ich habe bereits ein Wrapper-Shell-Skript, das den Pfad meiner Datendatei einnimmt und jetzt möchte ich auch den Namen der Datenbank aufnehmen.

In meinem Shell-Skript, i zuweisen:

DATABASE_NAME=$2 

Gibt es eine Möglichkeit an der Spitze meines mysql-Skripte, wo ich $ DATABASE_NAME verwenden kann? So in der MySQL-Skripte, wäre es:

USE DATABASE_NAME; 

statt, was ich habe jetzt:

USE name1; 
+0

Wie viele Datenbanken verwenden Sie gleichzeitig, während Sie in einem Skript sind? Wenn 1, bereinigen Sie Ihre Skripte einmal. – Drew

+0

Ich verwende nur 1 Datenbank namens Name1. Aber ich habe fast 10 mysql-Skripte, die darauf verweisen. Was meinst du mit "säubere deine Skripte einmal"? – Jain

+0

Ich sehe einfach nicht den Punkt der Leute tun 'wählen blah von mydb.table1 ...' mit 'mydb.nur – Drew

Antwort

1

können Sie mysql -e verwenden Sie den Code auszuführen:

mysql -e "USE ${DATABASENAME}; Some sql" 

Auf diese Weise irgendwelche ersetzen funktioniert.

Optional können Sie temporäre SQL-Dateien oder Pipeline-Code in Ihre MySQL schreiben, in dem Sie nur die ${DATABASENAME} ersetzen, wenn Sie diese Datei analysieren. (Die -e Option ist die transparenteste und einfachste)

+0

Ok, wenn ich das tue, könnte ich etwas wie mysql -e "USE $ {DATABASENAME}; DataLoad.sql" 'haben. Wie referenziere ich in der Datei DataLoad.sql den gleichen Datenbanknamen? (für so etwas wie 'SELECT COUNT (*) FROM name1.Load', wo name1 durch den DATABASENAME ersetzt werden soll) – Jain

+0

@Jain Der' USE' Befehl setzt die Standarddatenbank. Lassen Sie also einfach den Datenbanknamen aus Ihrem SQL, z. 'SELECT COUNT (*) FROM Load'. – Barmar

+1

Sie können 'source dateiname.sql' verwenden, um die SQL aus einer Datei zu laden. – Barmar