使用shell脚本从sqlite导出到csv
我正在做一个shell脚本导出一个sqlite查询到一个csv文件,就像这样:
#!/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"
在执行脚本时,屏幕上的输出会显示,而不是保存到“out.csv”。 它正在使用与命令行相同的方法,但我不知道为什么shell脚本无法将数据导出到文件。
我究竟做错了什么?
sqlite3的
你有一个单独的电话sqlite3
每行; 当你的select
运行时,你的.out out.csv
已经被遗忘了。
尝试:
#!/bin/bash ./bin/sqlite3 ./sys/xserve_sqlite.db <<! .headers on .mode csv .output out.csv select * from eS1100_sensor_results; !
代替。
sh / bash方法
您可以使用redirect来调用您的脚本:
$ your_script >out.csv
或者您可以在脚本中插入以下内容作为第一行:
exec >out.csv
前一种方法允许你指定不同的文件名,而后者输出到一个特定的文件名。 在这两种情况下, .output out.csv
可以忽略。
而不是点命令,你可以使用sqlite3命令选项:
sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv
这使得它是一个单线。
另外,你可以运行一个sql脚本文件:
sqlite3 -header -csv my_db.db < my_script.sql > out.csv
使用sqlite3 -help
查看可用选项的列表。
我最近创build了一个shell脚本,能够从db文件中获取表格并将其转换为csv文件。
https://github.com/darrentu/convert-db-to-csv
随时问我关于我的脚本的任何问题:)
虽然这个问题是关于shell脚本的,但是我认为这对那些只是将数据从sqlite3数据库传输到csv文件的人来说是很有帮助的。
我发现一个非常方便的方式来使用SQLitepipe理器扩展的Firefox浏览器。
只需连接到您的SQLite数据库文件在Firefox(SQlitepipe理器 – >连接数据库),然后表 – >导出表。 你将得到一些更多的选项,你可以点击并尝试….
最后你会得到一个csv文件,并且你select导出表格。