来自 sqlite3 数据库文件的类似猫的行为

问题描述 投票:0回答:1

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

cat somefile.dat |gnu_parralel do_something.

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

text, text, json

我想复制猫的行为,以便我可以对 sqllite3 数据库的每一行进行所有下游工作,但我不确定如何在 sqlite3 中进行。所以,我喜欢:

cat_in_sqllite3 somefile.db |gnu_parralel do_something.

PS:从未使用过 sqlite3,所以如果这是一个愚蠢的问题,我深表歉意。

bash sqlite gnu-parallel
1个回答
0
投票

您需要知道数据库中表的名称。如果我使用它,我发现我的只有一张桌子,叫做

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
© www.soinside.com 2019 - 2024. All rights reserved.