100 个版本 (21 个稳定版)
6.0.0 | 2024 年 3 月 17 日 |
---|---|
5.1.2 | 2024 年 2 月 22 日 |
4.1.3 | 2024 年 1 月 30 日 |
4.1.0 | 2023 年 12 月 27 日 |
0.4.0 | 2020 年 11 月 21 日 |
#42 在 命令行工具
每月下载量 158
155KB
3K SLoC
ODBC 转 Parquet
一个命令行工具,用于查询 ODBC 数据源并将结果写入 parquet 文件。
- 内存占用小。一次只保留一个批次在内存中。
- 快速。高效使用 ODBC 批量读取,以降低 I/O 开销。
- 灵活。查询任何有驱动程序支持的 ODBC 数据源。MySQL、MS SQL、Excel、...
查询中的类型映射
该工具查询 ODBC 数据源以获取类型信息并将其映射到 parquet 类型。
ODBC SQL 类型 | Parquet 类型 |
---|---|
Decimal(p < 39, s) | Decimal(p,s) |
Numeric(p < 39, s) | Decimal(p,s) |
Bit | Boolean |
Double | Double |
Real | Float |
Float(p: 0..24) | Float |
Float(p >= 25) | Double |
Tiny Integer Signed | Int8 Signed |
Tiny Integer Unsigned | Int8 Unsigned |
Small Integer | Int16 |
Integer | Int32 |
Big Int | Int64 |
Date | Date |
Time(p: 0..3)* | Time Milliseconds |
Time(p: 4..6)* | Time Microseconds |
Time(p: 7..9)* | Time Nanoseconds |
Timestamp(p: 0..3) | Timestamp Milliseconds |
Timestamp(p: 4..6) | Timestamp Microseconds |
Timestamp(p >= 7) | Timestamp Nanoseconds |
Datetimeoffset(p: 0..3) | Timestamp Milliseconds (UTC) |
Datetimeoffset(p: 4..6) | Timestamp Microseconds (UTC) |
Datetimeoffset(p >= 7) | Timestamp Nanoseconds (UTC) |
Varbinary | Byte Array |
Long Varbinary | Byte Array |
Binary | Fixed Length Byte Array |
所有其他类型 | Utf8 Byte Array |
p
是 precision
的缩写。 s
是 scale
的缩写。区间是包含的。
- 仅支持 Microsoft SQL Server 中的时间
安装
先决条件
要使用此工具,您需要一个 ODBC 驱动程序管理器和要访问的数据源的 ODBC 驱动程序。
Windows
Windows系统中已预装了ODBC驱动程序管理器。同样,还有ODBC数据源 (64Bit)
和ODBC数据源 (32Bit)
应用程序,您可以使用它来发现系统上已经可用的驱动程序。
Linux
此工具在运行时和构建期间都链接到libodbc.so
。要获取它,您应该安装unixODBC。您可以使用系统的软件包管理器来完成此操作。对于ubuntu,您运行
sudo apt install unixodbc-dev
OS-X
此工具在运行时和构建期间都链接到libodbc.so
。要获取它,您应该安装unixODBC。为了安装它,我推荐使用homebrew软件包管理器,它允许您使用以下命令安装:
brew install unixodbc
从GitHub下载二进制文件
https://github.com/pacman82/odbc2parquet/releases/latest
注意:如果您想使用32位驱动程序连接到数据源,请下载32位版本;如果想要通过64位驱动程序连接,请下载64位版本。反之则无法工作。
通过Cargo
如果您已安装Rust工具链,则可以通过Cargo安装此工具。
cargo install odbc2parquet
您可以从这里安装cargo
:https://rustup.rs/。
用法
使用odbc2parquet --help
查看所有命令。
查询
使用odbc2parquet help query
查看所有与获取数据相关的选项。
使用连接字符串查询
odbc2parquet query \
--connection-string "Driver={ODBC Driver 17 for SQL Server};Server=localhost;UID=SA;PWD=<YourStrong@Passw0rd>;" \
out.par \
"SELECT * FROM Birthdays"
使用数据源名称查询
odbc2parquet query \
--dsn my_db \
--password "<YourStrong@Passw0rd>" \
--user "SA" \
out.par1 \
"SELECT * FROM Birthdays"
在查询中使用参数
odbc2parquet query \
--connection-string "Driver={ODBC Driver 17 for SQL Server};Server=localhost;UID=SA;PWD=<YourStrong@Passw0rd>;" \
out.par \
"SELECT * FROM Birthdays WHERE year > ? and year < ?" \
1990 2010
列出可用的ODBC驱动程序
odbc2parquet list-drivers
列出可用的ODBC数据源
odbc2parquet list-data-sources
将数据插入到数据库中
odbc2parquet insert \
--connection-string "Driver={ODBC Driver 17 for SQL Server};Server=localhost;UID=SA;PWD=<YourStrong@Passw0rd>;" \
input.par \
MyTable
使用odbc2parquet help insert
查看所有与插入数据相关的选项。
链接
感谢@samaguire,为PowerShell用户提供了一个脚本,可以帮助您将多个表下载到文件夹中:https://github.com/samaguire/odbc2parquet-PSscripts
依赖项
~21–36MB
~729K SLoC