红宝石中的SQLite3命令

时间:2019-01-28 12:51:49

标签: ruby sqlite cmd

是否可以将SQLite中的命令传递到ruby脚本中? 例如,我创建了一个test.sqlite数据库。现在,我要将查询结果从该数据库导出到.csv文件中。我可以使用命令行简单地做到这一点:

Sqlite3 "H:\\test.sqlite"
.mode csv
.headers on
.once test.csv
select * from cars;

Sqlite3 "H:\\test.sqlite"
.mode csv
.headers on
.once test.csv
select * from cars;

或也使用SQLite3:

sqlite3 -header -csv sqlite3 -header -csv H:\test.sqlite< query.sql > test.csv

,它在CMD中工作得很好,但是我想在我的ruby脚本中进行编码。我还尝试使用%x将其传递到命令行,但无法正常工作。 有帮助吗?

3 个答案:

答案 0 :(得分:0)

您可以使用管道来接收STDIN,有人在这里问(Best practices with STDIN in Ruby?

或者您也可以使用sqlite gem(https://rubygems.org/gems/sqlite3/versions/1.3.11)连接到数据库,然后从ruby运行查询。

您也可以使用sequel(https://github.com/jeremyevans/sequel)界面更好,与sqlite数据库进行通信

答案 1 :(得分:0)

简单地系统(“ sqlite3 -header -csv sqlite3 -header -csv H:\ test.sqlite test.csv”

我只需要在路径中添加2个斜杠...

答案 2 :(得分:0)

问题没有完全定义。

首先阅读sqlite3 gemcsv library的文档。

使用此信息,您可以解析和编写csv文件,进行查询并从SQLite3 DB中获取结果,甚至更多。