2010-11-11 15 views
11

He creado una base de datos - tasks.db - con SQLite. Esta base de datos tiene una tabla - TODO - con los siguientes campos: Identificación (PK), fecha (ahora con el gatillo), proyecto, DueDate, estado, descripción¿Cómo automatizar un proceso INSERT INTO en SQLite?

Para introducir una nueva fila en SQLite desde la línea de comandos, Tengo que escribir:

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

que es un proceso bastante largo y propenso a errores. Así que decidí "automatizar" con un script de shell (BSQ) que se ejecuta de la siguiente manera:

#!/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');" 

... y no pasa nada cuando corro: BSQ sh. La secuencia aparece y luego me devuelve al mensaje. ¿Dónde me equivoqué o qué omití (¿ENTRAR? ¿Pero cómo lo hago?)?

Gracias por su ayuda

THG

+0

¿Qué esperas? Llama a 'echo sqlite ...' no invocará sqlite. Formatee la fuente correctamente. Use los íconos sobre el área de texto. – khachik

+0

¿Es correcto el último eco? ¿O está ejecutando sqlite3 directamente? Funciona bien aquí; repitiendo el comando al final. – falstro

+0

También: en sh '$ Proj' no se trata como una variable. Use '" $ Proj "' – khachik

Respuesta

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

funcionó perfectamente, por supuesto. Muchas gracias (y esta vez, no me olvidé de ACEPTAR la respuesta ...) – ThG

+0

@ThG: También puedes votarlo. –

+5

tenga en cuenta: esto no se ocupa de escapar –

Cuestiones relacionadas