Estoy haciendo un script de shell para exportar un sqlite consulta a un archivo csv, tal como esto:

 #!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db ".headers on"
./bin/sqlite3 ./sys/xserve_sqlite.db ".mode csv"
./bin/sqlite3 ./sys/xserve_sqlite.db ".output out.csv"
./bin/sqlite3 ./sys/xserve_sqlite.db "select * from eS1100_sensor_results;"
./bin/sqlite3 ./sys/xserve_sqlite.db ".exit"

Cuando se ejecuta la secuencia de comandos, el resultado aparece en la pantalla, en lugar de ser salvos «hacia fuera.csv». Trabaja haciendo lo mismo con el método de la línea de comandos, pero no sé por qué la secuencia de comandos de shell no para exportar datos en el archivo.

¿Qué estoy haciendo mal?

InformationsquelleAutor Rorro | 2011-04-25

4 Comentarios

  1. 121

    sqlite3

    Usted tiene una llamada independiente sqlite3 para cada línea; por el tiempo de su select se ejecuta, su .out out.csv ha sido olvidado.

    Tratar:

    #!/bin/bash
    ./bin/sqlite3 ./sys/xserve_sqlite.db <<!
    .headers on
    .mode csv
    .output out.csv
    select * from eS1100_sensor_results;
    !

    lugar.

    sh/bash métodos

    Usted puede llamar a su escritura con una redirección:

    $ your_script >out.csv

    o se pueden insertar los siguientes como primera línea en el script:

    exec >out.csv

    El antiguo método permite especificar nombres de archivo diferentes, mientras que las últimas salidas a un nombre de archivo específico. En ambos casos la línea .output out.csv puede ser ignorado.

    • Gracias ΤΖΩΤΖΙΟΥ, pero que no funciona…
    • Inténtelo de nuevo con la edición del «sqlite3» método.
    • Muy bien, gracias, ahora funciona! (y es necesario «>>» en lugar de «>», pero yo soy un newbei en linux :D)
    • Si la respuesta aquí en realidad respuestas su pregunta, usted debe hacer clic en la marca de verificación a continuación el total de votos de la respuesta (debe aparecer de color gris claro a usted). Esta marca la pregunta como respondida.
    • Lo siento por el retraso, soy un verdadero novato 😀
  2. 158

    Lugar del punto de comandos, puede utilizar opciones de comando sqlite3:

    sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv

    Esto hace que sea un one-liner.

    También, puede ejecutar una secuencia de comandos sql archivo:

    sqlite3 -header -csv my_db.db < my_script.sql > out.csv

    Uso sqlite3 -help para ver la lista de opciones disponibles.

    • Mucho, mucho mejor… esto debe ser aceptado solución! BESO 🙂
    • Esta solución también funciona en windows, hecho que sqlite3 es en su camino o en el mismo directorio.
  3. 6

    Recientemente he creado un script de shell que será capaz de tomar las tablas de un archivo de base de datos y convertirlos en archivos csv.

    https://github.com/darrentu/convert-db-to-csv

    No dude en hacer cualquier pregunta en mi script 🙂

    • Esto me ayudó. Usted debe copiar-pegar sus 10 líneas de código en su respuesta, entonces el upvote ya le he dado sentiría más que justificada.
    • esto es genial, gracias
  4. 0

    Aunque la pregunta es acerca de la secuencia de comandos de shell, creo que va a ayudar a que pocos de los que son sólo molestado acerca de la transferencia de los datos de la base de datos sqlite3 a un archivo csv.

    Me encontré con un muy conveniente la manera de hacerlo con el navegador firefox con SQLite Manager de extensión.

    Simplemente conectarse a la base de datos sqlite archivo en firefox ( SQlite manager -> conexión de base de datos ) y, a continuación, la Tabla -> tabla de Exportación. Se sirve con algunas opciones que usted puede simplemente haga clic y probar….

    Al final, obtener un archivo csv con la tabla de la u han elegido para ser exportado.

Dejar respuesta

Please enter your comment!
Please enter your name here