2010-11-11 5 views
11

J'ai créé une base de données - tasks.db - avec SQLite. Cette base de données a une table - todo - avec les champs suivants: id (Pk), la date (maintenant avec déclencheur), le projet, DueDate, état, descriptionComment automatiser un processus INSERT INTO dans SQLite?

Pour entrer une nouvelle ligne dans SQLite de la ligne de commande, Je dois écrire:

sqlite3 tasks.db "insert into todo (project,duedate,status,description) values (2010-11_18,'Home','Urgent','Call the plumber');" 

qui est un processus plutôt long et sujet aux erreurs. Alors j'ai décidé de « automatiser » avec un script shell (BSQ) qui fonctionne comme suit:

#!/bin/sh 
echo "What project ?" 
read Proj 
echo "For when ?" 
read Due 
echo "What status ?" 
read Stat 
echo "What to do ?" 
read Descr 

echo sqlite3 tasks.db "insert into todo (project,duedate,status,description) values ('$Proj',$Due,'$Stat','$Descr');" 

... et rien ne se passe quand je lance: sh bsq. La séquence apparaît puis me ramène à l'invite. Où est-ce que je me suis trompé ou qu'est-ce que j'ai omis (ENTRER? Mais comment est-ce que je fais cela?)?

Merci pour votre aide

thg

+0

Qu'est-ce que vous attendez-vous? Vous appelez 'echo sqlite ...' il n'invoquera pas sqlite. Veuillez formater la source correctement. Utilisez les icônes au-dessus de la zone de texte. – khachik

+0

Le dernier écho est-il correct? Ou exécutez-vous sqlite3 directement? Cela fonctionne bien ici; écho de la commande à la fin. – falstro

+0

Aussi: Dans sh '$ Proj' n'est pas traité comme une variable. Utilisez '" $ Proj "' – khachik

Répondre

23
#!/bin/sh 
echo "What project ?" 
read Proj 
echo "For when ?" 
read Due 
echo "What status ?" 
read Stat 
echo "What to do ?" 
read Descr 

echo "im gonna run" sqlite3 tasks.db "insert into todo \ 
    (project,duedate,status,description) \ 
    values (\"$Proj\",$Due,\"$Stat\",\"$Descr\");" 
sqlite3 tasks.db "insert into todo (project,duedate,status,description) \ 
     values (\"$Proj\",$Due,\"$Stat\",\"$Descr\");" 
+0

cela a fonctionné parfaitement, bien sûr. Merci beaucoup (et cette fois-ci, je n'ai pas oublié d'ACCEPTER la réponse ...) – ThG

+0

@ThG: Vous pouvez aussi le changer. –

+5

s'il vous plaît noter: cela ne prend pas soin de s'échapper –