Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rupurt/zodbc
A blazing fast ODBC Zig client
https://github.com/rupurt/zodbc
apache-arrow odbc performance zig
Last synced: 21 days ago
JSON representation
A blazing fast ODBC Zig client
- Host: GitHub
- URL: https://github.com/rupurt/zodbc
- Owner: rupurt
- License: mit
- Created: 2024-02-01T17:08:59.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-04-20T21:16:27.000Z (7 months ago)
- Last Synced: 2024-10-10T14:38:49.506Z (about 1 month ago)
- Topics: apache-arrow, odbc, performance, zig
- Language: Zig
- Homepage:
- Size: 125 KB
- Stars: 6
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# zodbc
A blazing fast ODBC Zig client
```console
> zodbc -h
zodbcUSAGE:
zodbc [OPTIONS]COMMANDS:
sql
dump
load
tables
table-privileges
columns
column-privileges
special-columns
primary-keys
foreign-keys
statistics
data-sources
functions
procedures
procedure-columns
info
attrs
benchmarkOPTIONS:
-h, --help Prints help information
```## Goals
- [ ] Fastest ODBC C ABI client library for bulk load/unload
- [x] Kernel thread worker pool concurrency per ODBC connection
- [x] High level Zig bindings
- [x] ODBC row & column bindings
- [x] ODBC Zig bindings
- [ ] ODBC to Arrow record batch reader/writer
- [ ] ODBC zero copy C ABI
- [ ] High level C ABI
- [ ] Expose all ODBC API's
- [ ] Database benchmarks
- [ ] Python bindings
- [ ] Elixir bindings
- [ ] Java bindings
- [ ] .NET bindings## Getting Started
- [Usage](#usage)
- [Commands](./docs/commands)
- [sql](./docs/commands/sql)
- [dump](./docs/commands/dump)
- [load](./docs/commands/load)
- [tables](./docs/commands/tables)
- [table-privileges](./docs/commands/table_privileges)
- [columns](./docs/commands/columns)
- [column-privileges](./docs/commands/column_privileges)
- [special-columns](./docs/commands/special_columns)
- [primary-keys](./docs/commands/primary_keys)
- [foreign-keys](./docs/commands/foreign_keys)
- [statistics](./docs/commands/statistics)
- [data-sources](./docs/commands/data_sources)
- [functions](./docs/commands/functions)
- [procedures](./docs/commands/procedures)
- [procedure-columns](./docs/commands/procedure-columns)
- [info](./docs/commands/info)
- [attrs](./docs/commands/attrs)
- [env](./docs/commands/attrs#env)
- [con](./docs/commands/attrs#con)
- [benchmark](./docs/commands/benchmark)
- [Library](./docs/LIBRARY.md)
- [Nix](./docs/NIX.md)
- [Development](./docs/DEVELOPMENT.md)## Usage
1. Add `zodbc` as a dependency in your `build.zig.zon`
```zig
.{
.name = "",
.version = "",
.dependencies = .{
.zodbc = .{
.url = "https://github.com/rupurt/zodbc/archive/.tar.gz",
.hash = "",
},
},
}
```Set `` to `12200000000000000000000000000000000000000000000000000000000000000000`, and Zig will provide the correct found value in an error message.
2. Add `zodbc` as a dependency module in your `build.zig`
```zig
// ...
const zodbc_dep = b.dependency("zodbc", .{ .target = target, .optimize = optimize });
exe.root_module.addImport("zodbc", zodbc_dep.module("zodbc"));
```## Development
```console
> nix develop -c $SHELL
``````console
> make
``````console
> make test
``````console
> make run
``````console
> make clean
``````console
> make build
``````console
> make run -- -h
> make run -- sql -h
...
``````console
> make exec -- -h
> make exec -- sql -h
``````console
> make compose.up
> make compose.down
```# License
`zodbc` is released under the [MIT license](./LICENSE)