2009-09-23 29 views
13

Otomatikleştirmeye çalıştığım bazı SQL komut dosyaları var. Geçmişte SQL * Plus'ı kullandım ve bir bash komut dosyasından el ile sqlplus ikili dosyasını çağırdım.SQL'i bir bash komut dosyasından nasıl çalıştırıyorsunuz?

Ancak, DB'ye bağlanmanın bir yolu olup olmadığını anlamaya çalışıyorum ve betiği bash komut dosyasının içinden çağırıyorum ... böylece date'u ekleyebilir ve sorguları bir Geçmişte belirli sayıda gün.

cevap

19

Biraz kafam karıştı. Sqlplus'ı bash komut dosyasından arayabilmeniz gerekir. Bu, bash komut dosyası içinde aşağıdaki yürütme ilk açıklamada

deneyin ile yaptıklarını çekebilir:

#!/bin/bash   
echo Start Executing SQL commands 
sqlplus <user>/<password> @file-with-sql-1.sql 
sqlplus <user>/<password> @file-with-sql-2.sql 

Eğer komut içine veri aktarmak mümkün istiyorsanız tarafından SQLPlus ile yapabilirsiniz komut dosyası içine argümanlar geçen: dosya ile-sql-1.SQL

select * from users where username='&1'; 

Sonra ch

İçindekiler ange bash komut Bash gibi

#!/bin/bash 

MY_USER=bob 
sqlplus <user>/<password> @file-with-sql-1.sql $MY_USER 
-4

sql veritabanı bağlantısı içinde yerleşik olmayan değer geçirmeden Sqlplus çağırmak ... Eğer üçüncü parti bir çeşit alet kullanmak gerekecektir.

+6

Sqlplus "üçüncü şahıs aracı" – michael

-3

İşte sqlplus için

mysql -u [database_username] -p [database_password] -D [database_name] -e "SELECT * FROM [table_name]" 
+3

OP Oracle kullandığını _is_. –

+0

Bu oracle değil. –

0

Belki yapabilirsiniz boru SQL sorgusu kabuk bash MySQL sorguları çalışan basit bir yoludur. Bu mysql için çalışır:

echo "SELECT * FROM table" | mysql --user=username database 
8

Ayrıca aynı şeyi yapmak için bir "Burada belge" kullanabilirsiniz:

VARIABLE=SOMEVALUE 

sqlplus connectioninfo << HERE 
start file1.sql 
start file2.sql $VARIABLE 
quit 
HERE 
İlgili konular