Crate arrow_odbc

source ·
Expand description

Fill Apache Arrow arrays from ODBC data sources.

§Usage

use arrow_odbc::{odbc_api::{Environment, ConnectionOptions}, OdbcReaderBuilder};

const CONNECTION_STRING: &str = "\
    Driver={ODBC Driver 17 for SQL Server};\
    Server=localhost;\
    UID=SA;\
    PWD=My@Test@Password1;\
";

fn main() -> Result<(), anyhow::Error> {
    // Your application is fine if you spin up only one Environment.
    let odbc_environment = Environment::new()?;
     
    // Connect with database.
    let connection = odbc_environment.connect_with_connection_string(
        CONNECTION_STRING,
        ConnectionOptions::default()
    )?;

    // This SQL statement does not require any arguments.
    let parameters = ();

    // Execute query and create result set
    let cursor = connection
        .execute("SELECT * FROM MyTable", parameters)?
        .expect("SELECT statement must produce a cursor");

    // Read result set as arrow batches. Infer Arrow types automatically using the meta
    // information of `cursor`.
    let arrow_record_batches = OdbcReaderBuilder::new().build(cursor)?;

    for batch in arrow_record_batches {
        // ... process batch ...
    }

    Ok(())
}

Re-exports§

Structs§

Enums§

Functions§

  • Query the metadata to create an arrow schema. This method is invoked automatically for you by [crate::OdbcReader::new]. You may want to call this method in situtation ther you want to create an arrow schema without creating the reader yet.
  • Fastest and most convinient way to stream the contents of arrow record batches into a database table. For usecase there you want to insert repeatedly into the same table from different streams it is more efficient to create an instance of self::OdbcWriter and reuse it.
  • Creates an SQL insert statement from an arrow schema. The resulting statement will have one placeholer (?) for each column in the statement.