2012-12-31 16 views
10

Mam skryptu MySQL plik o nazwie query1.sql który zawiera:parametry podaje do MySQL skrypt

select * FROM $(tblName) LIMIT 10; 

jestem w konsoli MySQL, w jaki sposób przekazać parametr do skryptu? To nie przekazania zmiennej:

mysql> \. query1.sql -v tblName=Users 
+0

poniższy link może pomóc: http://databobjr.blogspot.com/2011/ 07/passing-parameters-to-mysql-query.html –

Odpowiedz

9

Można użyć user variables osiągnąć zachowanie, które opisują. Jeśli używasz zmiennej jako identyfikatora schematu, a nie wartości danych, będziesz musiał użyć przygotowanej instrukcji, aby móc dynamicznie komponować zapytanie.

query1.sql:

SET @query = CONCAT('Select * FROM ', @tblName, ' LIMIT 10'); 
PREPARE stmt FROM @query; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

wywołany jako

mysql> SET @tblName = 'Users'; \. query1.sql 
+1

Wypróbowałem twój kod, to nie działa. 'ERROR 1064 (42000): Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL dla właściwej składni do użycia w pobliżu '@tblname limit 1' w linii 11' –

+0

@Anand, użyty do prostego przykładu, by to sprawdzić, zaktualizował moją odpowiedź. – MvG

+0

To działało. Dzięki! – decapo

5

może pracować dla Ciebie

mysql -u root -p -e"set @temp=1;" < /home/mysql/Desktop/a.sql 

i

mysql> set @temp=some_value; 
mysql> source file.sql 

to prawie podobny do problemu po prostu spróbować

+0

Tutaj pierwszy nie działa. Drugi robi. – silverdr

8

Komenda linia połączenia z Vidyadhar pracował dla mnie, ale tylko z małą modyfikacją:

mysql -u root -p -e"set @temp=1; `cat /home/mysql/Desktop/a.sql`" 
0

Odpowiedź z @ user4150422 powyżej prawie pracował ode mnie, ale cat dał mi problemy z pozwoleniem, więc musiałem użyć niewielkiej alternatywy. Dziwnie komenda source nie działa w miejscu albo kota, ale \. zrobił

mysql -u root -p -e"set @temp=1; `\. /home/mysql/Desktop/a.sql`" 
0

Dla bash scripting:

tblName=$1 
searchFor="%something%" 

echo "select * FROM $tblName LIMIT 10; 
     select * From $tblName where somecolumn like '$searchFor'; 
" | mysql