Export from sqlite to csv using shell script

前端 未结 5 1560
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-11-27 09:54

I\'m making a shell script to export a sqlite query to a csv file, just like this:

 #!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db \".headers on\"
./bin/sq         


        
相关标签:
5条回答
  • 2020-11-27 10:26

    Instead of the dot commands, you could use sqlite3 command options:

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

    This makes it a one-liner.

    Also, you can run a sql script file:

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

    Use sqlite3 -help to see the list of available options.

    0 讨论(0)
  • 2020-11-27 10:32

    Although the question is about shell script, I think it will help few of those who are just bothered about transferring the data from the sqlite3 database to a csv file.

    I found a very convinient way to do it with the firefox browser using SQLite Manager extension.

    Simply connect to your sqlite database file in firefox ( SQlite manager -> connect database ) and then Table -> Export table. You will be served with some more options that you can just click and try....

    In the end you get a csv file with the table u have chosen to be exported.

    0 讨论(0)
  • 2020-11-27 10:35
    Using command line for Linux:
    
    user@dell-Admin: sqlite3 #activate your sqlite database first
    sqlite> .tables #search for tables if any available if already created one.
    sqlite> .schema #if you want to check the schema of the table.
    
    # once you find your table(s), then just do the following:
    
    sqlite> .headers on   #export along with headers (column names)
    sqlite> .mode csv     #file type is csv
    sqlite> .output example.csv   #you want to provide file name to export
    sqlite> SELECT * from events;    #If entire table is needed or select only required
    sqlite> .quit    #finally quit the sqlite3
    

    Now search in your system for example.csv file and you will get it.

    0 讨论(0)
  • 2020-11-27 10:43

    sqlite3

    You have a separate call to sqlite3 for each line; by the time your select runs, your .out out.csv has been forgotten.

    Try:

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

    instead.

    sh/bash methods

    You can either call your script with a redirection:

    $ your_script >out.csv
    

    or you can insert the following as a first line in your script:

    exec >out.csv
    

    The former method allows you to specify different filenames, while the latter outputs to a specific filename. In both cases the line .output out.csv can be ignored.

    0 讨论(0)
  • 2020-11-27 10:46

    I recently created a shell script that will be able to take the tables from a db file and convert them into csv files.

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

    Feel free to ask me any questions on my script :)

    0 讨论(0)
提交回复
热议问题