63个版本

0.5.7 2024年1月26日
0.5.5 2023年9月14日
0.5.2 2022年11月4日
0.5.0-beta.42022年1月1日
0.0.10 2019年3月8日

数据库接口 中排名 71

Download history 10/week @ 2024-07-01 161/week @ 2024-07-29

每月下载量 161

Apache-2.0 OR MIT

765KB
16K SLoC

dbcrossbar: 在数据库、CSV文件和云存储之间复制表格数据

Build Status

dbcrossbar 在不同的数据库和存储格式之间移动大数据集。

一些示例

# Copy from a CSV file to a PostgreSQL table.
dbcrossbar cp \
    --if-exists=overwrite \
    --schema=postgres-sql:my_table.sql \
    csv:my_table.csv \
    'postgres://[email protected]:5432/postgres#my_table'

# Upsert from a PostgreSQL table to BigQuery.
dbcrossbar cp \
    --if-exists=upsert-on:id \
    --temporary=gs://$GS_TEMP_BUCKET \
    --temporary=bigquery:$GCLOUD_PROJECT:temp_dataset \
    'postgres://[email protected]:5432/postgres#my_table' \
    bigquery:$GCLOUD_PROJECT:my_dataset.my_table

它还可以在表格模式格式之间进行转换,包括PostgreSQL的 CREATE TABLE 语句和BigQuery JSON模式

# Convert a PostgreSQL `CREATE TABLE` statement to a BigQuery JSON schema.
dbcrossbar schema conv postgres-sql:my_table.sql bigquery-schema:my_table.json

# Extract a schema from a CSV file and convert to Postgres `CREATE TABLE`.
dbcrossbar schema conv csv:data.csv postgres-sql:schema.sql

更多信息,请参阅文档

贡献

有关构建 dbcrossbar、运行测试和贡献代码的更多说明,请参阅 CONTRIBUTING.md

我们要求 nightly Rust。我们使用 rust-toolchain 文件锁定特定的 nightly Rust 版本。如果您想更新它,请查看 Rustup组件历史记录 并选择支持 rlsclippyrustfmt 的最新版本。

运行集成测试

您可以使用 cargo test 运行常规测试套件,但为了运行完整的集成测试,您需要执行以下操作

# Run a local PostgreSQL on port 5432.
docker run --name postgres -e POSTGRES_PASSWORD= -p 5432:5432 -d mdillon/postgis
createdb -h localhost -U postgres -w dbcrossbar_test
export POSTGRES_TEST_URL=postgres://postgres:@localhost:5432/dbcrossbar_test
echo "create extension if not exists postgis;" | psql $POSTGRES_TEST_URL
echo "create extension if not exists citext;" | psql $POSTGRES_TEST_URL
echo "create schema if not exists testme1;" | psql $POSTGRES_TEST_URL

# Point to test databases and test buckets.
export GS_TEST_URL=gs://$MY_GS_TEST_BUCKET/dbcrossbar/
export BQ_TEST_DATASET=$MY_BQ_ROOT:test
export S3_TEST_URL=s3://$MT_S3_TEST_BUCKET/dbcrossbar/

# This helps to ensure that we're not depending on our users to have set
# a default gcloud project anywhere.
gcloud config unset project

# These can be omitted if you don't want to test Redshift.
export REDSHIFT_TEST_URL=redshift://user:pass@server:port/db
export REDSHIFT_TEST_IAM_ROLE=$MY_IAM_ROLE
export REDSHIFT_TEST_REGIION=$MY_AWS_REGION

# Needed for BigML. Does not work with AWS_SESSION_TOKEN.
export AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=...
export BIGML_USERNAME=... BIGML_API_KEY=...

# Run the integration tests.
env RUST_BACKTRACE=1 RUST_LOG=warn,dbcrossbar=debug \
    cargo test --all -- --ignored --nocapture

许可证

根据以下任一许可证授权

...根据您的选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,都应如上所述双许可,不附加任何额外条款或条件。

第三方库

dbcrossbar 依赖于多种第三方库,每个库都有自己的版权和许可,详情请见此处。我们已配置了一个 deny.toml 文件,当前尝试将依赖限制在 MIT、Apache-2.0、BSD-3-Clause、BSD-2-Clause、CC0-1.0、ISC、OpenSSL 和 Zlib 许可证,以及一个单独的 MPL-2.0 依赖项。但请验证 deny.toml 文件(以及个别依赖项)以确保,因为细节可能会在未来发生变化。这些许可证中的每一项都对再分发施加了某些义务。

依赖项

~43–60MB
~1M SLoC