#sql-query #data-source #sql #csv #datafusion #json #apache-arrow

app dfq

一个用于在各种数据源上运行SQL的命令行工具

2个版本

0.1.1 2023年12月10日
0.1.0 2023年12月10日

#2562数据库接口

MIT/Apache

25KB
150

DFQ - 数据融合查询

Crates.io

使用 Apache Arrow DataFusion SQL查询引擎在各种数据源上运行SQL的命令行工具。

用法

$ dfq --help
A CLI for running SQLs over various data sources.

Usage: dfq [OPTIONS] [DATA_AND_SQL]...

Arguments:
  [DATA_AND_SQL]...  data sources and SQL, e.g. `sample.csv "select * from t0"`

Options:
  -d, --dialect <DIALECT>  
  -o, --output <OUTPUT>    [default: terminal] [possible values: json, csv, terminal]
  -h, --help               Print help
$ dfq samples/users.csv samples/orders.csv "select count(*) as num_orders, t0.name from t0 join t1 on t0.id = t1.user group by t0.name order by num_orders"
+------------+--------+
| num_orders | name   |
+------------+--------+
| 1          | Henry  |
| 2          | Taylor |
+------------+--------+
$ dfq samples/orders.csv "describe t0"
+-------------+-------------------------+-------------+
| column_name | data_type               | is_nullable |
+-------------+-------------------------+-------------+
| id          | Int64                   | YES         |
| user        | Int64                   | YES         |
| ts          | Timestamp(Second, None) | YES         |
| status      | Utf8                    | YES         |
+-------------+-------------------------+-------------+

状态

支持的数据源

  1. 本地行分隔的JSON文件,以.json.json.gz结尾
  2. (待办) 本地JSON数组文件
  3. 本地CSV文件,以.csv.csv.gz结尾
  4. Parquet文件,以.parquet.prq结尾

支持的输出格式

  1. 打印的表格格式(默认)
  2. JSON数组格式
  3. JSON行分隔格式
  4. CSV
  5. Parquet

所有输出现在都指向stdout,如果需要,用户需要手动将它们重定向到文件。

依赖项

~60MB
~1M SLoC