sqlite3数据库文件的类似cat的行为

yi0zb3m4  于 2023-03-19  发布在  SQLite
关注(0)|答案(1)|浏览(164)

通常,当我有例如csv的平面文件,我会这样做:

cat somefile.dat |gnu_parralel do_something.

不幸的是,现在我有一个sqlite3文件,列内容类型为:

text, text, json

我希望复制cat行为,以便可以对sqlite3 db的每一行执行所有下游工作,但我不确定如何在sqlite3中执行此操作。

cat_in_sqllite3 somefile.db |gnu_parralel do_something.

PS:从来没有用过sqlite3,所以如果这是一个愚蠢的问题,我道歉。

mkh04yzy

mkh04yzy1#

您需要知道数据库中表的名称,如果我使用这个表,我会发现我的表只有一个名为Data的表:

sqlite3 database.db ".tables"  
                 
Data

现在,您可以请求该表中的所有记录:

sqlite3 database.db "select * from Data"

0,"27576,28095,4757"
1,"24415,26688,21060"
2,"30487,13470,31387"
3,"10553,25709,27472"
4,"17074,14918,19630"

您可能不喜欢输出格式,因此您可以查看以下可用模式:

sqlite3 database.db ".mode ?"

Error: mode should be one of: ascii box column csv html insert json line list markdown qbox quote table tabs tcl

然后,您可以选择不同的模式并在该模式下打印数据:

sqlite3 database.db ".mode json" "select * from Data"
[{"id":0,"channel0":"27576,28095,4757"},
{"id":1,"channel0":"24415,26688,21060"},
{"id":2,"channel0":"30487,13470,31387"},
{"id":3,"channel0":"10553,25709,27472"},
{"id":4,"channel0":"17074,14918,19630"}]

您可能希望包含列标题:

sqlite3 readings.db ".headers on" "select * from Data"

id|channel0
0|27576,28095,4757
1|24415,26688,21060
2|30487,13470,31387
3|10553,25709,27472
4|17074,14918,19630

或者压制他们:

sqlite3 readings.db ".headers off" "select * from Data"

0|27576,28095,4757
1|24415,26688,21060
2|30487,13470,31387
3|10553,25709,27472
4|17074,14918,19630

相关问题