ubuntu

2011-04-21 32 views
5

php den sqlite komutlarını çalıştırmak için bir kabuk betiği oluşturmak ubuntu10.10 işletim sisteminde bir SHELL SCRIPT kullanarak yeni bir db sqlite oluşturmak istiyorum .... Herhangi bir fikir ??ubuntu

Aşağıdaki kod ile 'create.sh' dosyası çalıştı

... termminal bir ./create.sh çalıştırmak daha

#!/bin/bash 
sqlite ex3.db 
create table t1(f1 integer primary key,f2 text) 

ama sqlite beni neden> istemi ... Ben görmüyorum oluşturulan DB ex3 yerde ..

cevap

4
#!/bin/bash 

sqlite3 ex3.db "create table t1(f1 integer primary key,f2 text)" 

maalesef mümkün değildir şu anda kontrol etmek, sanırım çalışması gerekir ... yardım edin.

+1

Komutun çıktısını bir değişkende yakalamak istemediğiniz sürece, bir kabuk betiği içindeki backticks'e ihtiyacınız yoktur. OTOH, ** ** SQLite SQL komutlarını bu komut satırı üzerinden verebilir ve hala backticks ile çalışacaktır. Muhtemelen SQL'in daha karmaşık SQL parçaları için standart girdiyi kullanmak isteyebilirsiniz. –

+1

Bu benim için çalıştı ... Teşekkürler Vlad Khomich .. – Roopa

3

Kendi SQL DDL standart girişi üzerinden SQLite komutları beslemek istiyorum: SQL_ENTRY_TAG_N

#!/bin/bash 
sqlite3 mydatabase <<SQL_ENTRY_TAG_1 
SELECT * FROM sqlite_master; 
SQL_ENTRY_TAG_1 

kullanarak edilebilir Bunu gerçekleştirmek için

#!/bin/bash 
echo 'create table t1(f1 integer primary key,f2 text);' | sqlite ex3.db 
5

Bir daha yolu detayları için snippet bakınız

0

CREATE ve INSERT'un create.sh'a ait bir örneği:

#!/bin/bash 
DB_NAME=ex3.sqlite 
DB_TABLE=t1 

sqlite3 $DB_NAME << EOF 

DROP TABLE IF EXISTS $DB_TABLE; 

CREATE TABLE $DB_TABLE (
    "f1" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    "f2" TEXT NOT NULL DEFAULT "f2-text" 
); 

INSERT INTO $DB_TABLE (f1, f2) VALUES (1, "text 1"); 
INSERT INTO $DB_TABLE (f1, f2) VALUES (2, "text 2"); 

EOF