24 个版本 (9 个重大更新)
0.13.0 | 2024年7月25日 |
---|---|
0.11.3 | 2024年2月11日 |
0.11.1 | 2023年12月26日 |
0.10.1 | 2023年11月14日 |
0.6.1 | 2023年3月13日 |
#45 in 数据库接口
7,583 每月下载量
在 8 个 Crates 中使用 (6 个直接使用)
1MB
24K SLoC
PRQL 编译器
prqlc
是从 PRQL 到 SQL 的编译器的参考实现,用 Rust 编写。它还充当 CLI。
有关 PRQL 的更多信息,请访问 PRQL 网站 或 PRQL 仓库。
命令行界面
prqlc
充当 PRQL 编译器的 CLI。它是一个独立的、无依赖的二进制文件,可以将 PRQL 编译成 SQL。
用法
prqlc compile
此命令作为一个过滤器,将 PRQL 字符串编译成 SQL 字符串。
$ echo 'from employees | filter has_dog | select salary' | prqlc compile
SELECT
salary
FROM
employees
WHERE
has_dog
可以使用与 SQL 兼容的 CLI 工具执行 PRQL 查询,例如 DuckDB CLI。
$ curl -fsL https://raw.githubusercontent.com/PRQL/prql/0.12.2/prqlc/prqlc/tests/integration/data/chinook/albums.csv -o albums.csv
$ echo 'from `albums.csv` | take 3' | prqlc compile | duckdb
┌──────────┬───────────────────────────────────────┬───────────┐
│ album_id │ title │ artist_id │
│ int64 │ varchar │ int64 │
├──────────┼───────────────────────────────────────┼───────────┤
│ 1 │ For Those About To Rock We Salute You │ 1 │
│ 2 │ Balls to the Wall │ 2 │
│ 3 │ Restless and Wild │ 2 │
└──────────┴───────────────────────────────────────┴───────────┘
不传递任何参数执行此命令将启动交互模式,允许交互式编写 PRQL 查询。在此模式下,编写 PRQL 并按 Ctrl-d
(Linux,macOS)或 Ctrl-z
(Windows)显示编译后的 SQL。
prqlc compile
与作为过滤器使用时一样,可以将 SQL 字符串输出传递给 DuckDB CLI 和类似工具。
$ prqlc compile | duckdb
Enter PRQL, then press ctrl-d to compile:
from `albums.csv`
take 3
┌──────────┬───────────────────────────────────────┬───────────┐
│ album_id │ title │ artist_id │
│ int64 │ varchar │ int64 │
├──────────┼───────────────────────────────────────┼───────────┤
│ 1 │ For Those About To Rock We Salute You │ 1 │
│ 2 │ Balls to the Wall │ 2 │
│ 3 │ Restless and Wild │ 2 │
└──────────┴───────────────────────────────────────┴───────────┘
安装
通过 Homebrew(macOS,Linux)
brew install prqlc
通过 winget(Windows)
winget install prqlc
从 GitHub 发布页面
在 PRQL 发布页面 上提供适用于 Linux、macOS 和 Windows 的预编译二进制文件。
从源代码
# From crates.io
cargo install prqlc
# From a local PRQL repository
cargo install --path prqlc/prqlc
Shell 完整性
prqlc shell-completion
命令打印支持 Shell 的 shell 完整性脚本,并将打印的脚本保存到文件中,使 Shell 能够为每个会话加载完整性。
Bash
对于 Linux
prqlc shell-completion bash >/etc/bash_completion.d/prqlc
对于 macOS
prqlc shell-completion bash >/usr/local/etc/bash_completion.d/prqlc
fish
prqlc shell-completion fish >~/.config/fish/completions/prqlc.fish
PowerShell
mkdir -Path (Split-Path -Parent $profile) -ErrorAction SilentlyContinue
prqlc shell-completion powershell >path/to/prqlc.ps1
echo 'Invoke-Expression -Command path/to/prqlc.ps1' >>$profile
zsh
prqlc shell-completion zsh >"${fpath[1]}/_prqlc"
请确保以下行出现在~/.zshrc
中
autoload -U compinit
compinit -i
助手
关于prqlc
的速查表可在多个网站和各种工具中找到。
库
有关更多使用示例和库文档,请查看prqlc
的文档。
库安装
cargo add prqlc
示例
将PRQL字符串编译成SQLite方言字符串
// In a file src/main.rs
use prqlc::{compile, Options, DisplayOptions, Target, sql::Dialect};
let prql = "from employees | select {name, age}";
let opts = &Options {
format: false,
target: Target::Sql(Some(Dialect::SQLite)),
signature_comment: false,
display: DisplayOptions::Plain,
..Default::default()
};
let sql = compile(&prql, opts).unwrap();
assert_eq!("SELECT name, age FROM employees", sql);
依赖关系
~9–33MB
~501K SLoC