#parquet-file #parquet #odbc #command-line-tool #sql

app odbc2parquet

查询 ODBC 数据源并将结果存储在 Parquet 文件中

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命令行工具

Download history 56/week @ 2024-04-05 46/week @ 2024-04-12 94/week @ 2024-04-19 81/week @ 2024-04-26 55/week @ 2024-05-03 60/week @ 2024-05-10 55/week @ 2024-05-17 29/week @ 2024-05-24 47/week @ 2024-05-31 60/week @ 2024-06-07 33/week @ 2024-06-14 26/week @ 2024-06-21 73/week @ 2024-06-28 35/week @ 2024-07-05 37/week @ 2024-07-12 10/week @ 2024-07-19

每月下载量 158

MIT 许可证

155KB
3K SLoC

ODBC 转 Parquet

Licence Crates.io

一个命令行工具,用于查询 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

pprecision 的缩写。 sscale 的缩写。区间是包含的。

  • 仅支持 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

您可以从这里安装cargohttps://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