< 返回版块

lewiszlw 发表于 2025-09-02 17:38

Tags:database,sql

功能

  1. 在远端数据库执行 SQL 查询并将结果流式传输到 DataFusion 作为一张表
  2. 往远端数据库插入数据
  3. 支持自动推断和用户指定结果集 schema
  4. 支持下推 filters 和 limit 到远端数据库执行
  5. 执行算子可以序列化反序列化以支持分布式执行
  6. 数据可以被转换后再输出到下一算子

使用

  1. 从远端数据库查询数据
#[tokio::main]
pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let options = PostgresConnectionOptions::new("localhost", 5432, "user", "password");
    let remote_table = RemoteTable::try_new(options, "select * from supported_data_types").await?;

    let ctx = SessionContext::new();
    ctx.register_table("remote_table", Arc::new(remote_table))?;

    ctx.sql("select * from remote_table").await?.show().await?;

    Ok(())
}
  1. 往远端数据库插入数据
#[tokio::main]
pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let options = PostgresConnectionOptions::new("localhost", 5432, "user", "password");
    let remote_table = RemoteTable::try_new(options, vec!["public", "test_table"]).await?;

    let ctx = SessionContext::new();
    ctx.register_table("remote_table", Arc::new(remote_table))?;

    ctx.sql("insert into remote_table values (1, 'Tom')").await?.show().await?;

    Ok(())
}

支持的数据库

  • Postgres
    • Int2 / Int4 / Int8
    • Float4 / Float8 / Numeric
    • Char / Varchar / Text / Bpchar / Bytea
    • Date / Time / Timestamp / Timestamptz / Interval
    • Bool / Oid / Name / Json / Jsonb / Geometry(PostGIS) / Xml / Uuid
    • Int2[] / Int4[] / Int8[]
    • Float4[] / Float8[]
    • Char[] / Varchar[] / Bpchar[] / Text[] / Bytea[]
  • MySQL
    • TinyInt (Unsigned) / Smallint (Unsigned) / MediumInt (Unsigned) / Int (Unsigned) / Bigint (Unsigned)
    • Float / Double / Decimal
    • Date / DateTime / Time / Timestamp / Year
    • Char / Varchar / Binary / Varbinary
    • TinyText / Text / MediumText / LongText
    • TinyBlob / Blob / MediumBlob / LongBlob
    • Json / Geometry
  • Oracle
    • Number / BinaryFloat / BinaryDouble / Float
    • Varchar2 / NVarchar2 / Char / NChar / Long / Clob / NClob
    • Raw / Long Raw / Blob
    • Date / Timestamp
    • Boolean
  • SQLite
    • Null / Integer / Real / Text / Blob
  • DM (达梦数据库)
    • TinyInt / Smallint / Int / Bigint
    • Real / Float / Double / Numeric / Decimal
    • Char / Varchar / Text
    • Binary / Varbinary / Image
    • Bit / Timestamp / Time / Date

Ext Link: https://github.com/systemxlabs/datafusion-remote-table

评论区

写评论

还没有评论

1 共 0 条评论, 1 页