Skip to main content

Module copy

Module copy 

Source
Expand description

CSV/text export and import via COPY protocol. CSV/text export and import via COPY protocol.

This module provides ergonomic APIs for:

  • Exporting query results or tables as CSV/TSV to files, writers, or strings
  • Importing CSV/TSV data from files, readers, or strings into tables
  • Streaming export for large datasets without buffering all data in memory

§CSV Export

use hyperdb_api::{Connection, CreateMode, Result};
use hyperdb_api::copy::CopyOptions;

fn main() -> Result<()> {
    let conn = Connection::connect("localhost:7483", "test.hyper", CreateMode::DoNotCreate)?;

    // Export to a file
    conn.export_csv("SELECT * FROM users", &mut std::fs::File::create("users.csv")?)?;

    // Export with custom options
    let opts = CopyOptions::csv().with_header(true).with_delimiter(b'\t');
    conn.export_text("SELECT * FROM users", &opts, &mut std::io::stdout())?;

    Ok(())
}

§CSV Import

use hyperdb_api::{Connection, CreateMode, Result};

fn main() -> Result<()> {
    let conn = Connection::connect("localhost:7483", "test.hyper", CreateMode::DoNotCreate)?;

    // Import from a file
    let csv_data = b"1,Alice\n2,Bob\n";
    let rows = conn.import_csv("my_table", &csv_data[..])?;
    println!("Imported {} rows", rows);

    Ok(())
}

Structs§

CopyOptions
Options for COPY text format operations (CSV, TSV, etc.).