Veritabanı kontrol postgreSQL shell kullanan var
Eğer biri varsa postgresql veritabanı olup olmadığını kontrol etmek için kabuk kullanmak mümkün olup olmadığı hakkında bana söylemek mümkün olacağını merak ediyordum?
Bir kabuk programı yapıyorum ve ben sadece zaten var değil mi ama bugüne kadar bunu uygulamak için nasıl görmek mümkün olmamıştır veritabanı oluşturmak istiyor.
Teşekkür ederim
CEVAP
Arturo çözüm aşağıdaki değişiklik kullanın:
psql -lqt | cut -d \| -f 1 | grep -w <db_name> | wc -l
Ne işe yaradığını biliyorum
psql -l
aşağıdaki gibi bir şey verir:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------- ----------- ---------- ------------ ------------ -----------------------
my_db | my_user | UTF8 | en_US.UTF8 | en_US.UTF8 |
postgres | postgres | LATIN1 | en_US | en_US |
template0 | postgres | LATIN1 | en_US | en_US | =c/postgres
| | | | | postgres=CTc/postgres
template1 | postgres | LATIN1 | en_US | en_US | =c/postgres
| | | | | postgres=CTc/postgres
(4 rows)
Naif bir yaklaşım kullanarak bir veritabanı arama "Listesi, "" veya "satır" başarılı olur. Access denir demektir Biz yerleşik ilk sütunda sadece arama için komut satırı araçları bir grup ile bu çıkış borusu.
-t
bayrak üstbilgi ve altbilgi kaldırır:
my_db | my_user | UTF8 | en_US.UTF8 | en_US.UTF8 |
postgres | postgres | LATIN1 | en_US | en_US |
template0 | postgres | LATIN1 | en_US | en_US | =c/postgres
| | | | | postgres=CTc/postgres
template1 | postgres | LATIN1 | en_US | en_US | =c/postgres
| | | | | postgres=CTc/postgres
Bir sonraki parça, cut -d \| -f 1
|
dikey çubuk karakteri (ters eğik çizgi ile kabuk kaçtı) çıkış böler ve alan 1 seçer. Bu yapraklar:
my_db
postgres
template0
template1
grep -w
bütün kelimeler maçlar, ve eğer öyleyse bu senaryoda temp
arıyorsanız uyuşmaz. wc -l
sayıları eşleştirme hatları, eğer db varsa getirisi olan 1 ve 0 değil.
Eğer yerine bir çıkış kodu döndürmek yerine çıkış baskı UNIX kuralı takip ederseniz, boru hattından wc
damla:
psql -lqt | cut -d \| -f 1 | grep -w <db_name>
Bu boru hattının çıkış durumu öyle olmasa Eğer ... Eğer veritabanı varsa 0
(başarı) olacak ya da 18 ** (hata). Kabuk özel değişken son komutun çıkış durumu 19* *koyacaktır. Ayrıca bu durum, doğrudan bir koşullu test edebilirsiniz:
if psql -lqt | cut -d \| -f 1 | grep -w <db_name>; then
# database exists
# $? is 0
else
# ruh-roh
# $? is 1
fi
Veritabanı yapısı değişiklikleri için ...
kontrol etmek mümkün değildir ya da po...
Nasıl gıt (sürüm kontrol) altında bir ...
Nasıl bir tabloya Android SQLite verit...
Nasıl istiyorsan öyle etkin bağlantıla...