Giter Club home page Giter Club logo

clickhouse-schema's Introduction

schema

BSD3 Build Status codecov Go Report Card Used By Godoc

schema is a Go package providing access to database schema metadata, for database/sql drivers.

TODO more docs

Currently supporting the following database engines / SQL dialects:

  • Microsoft SQL Server
  • MySQL
  • Oracle
  • Postgres
  • Snowflake
  • SQLite
  • Vitess

For a list of supported drivers, and their capabilities with regards to sql.ColumnType support, see drivercaps

Installation

go get github.com/jimsmart/schema
import "github.com/jimsmart/schema"

Dependencies

Example

See GoDocs for usage examples.

Documentation

GoDocs https://godoc.org/github.com/jimsmart/schema

Testing

Database services for testing against are hosted in Docker.

To bring up the database services: execute docker-compose up inside the project folder, and wait until all of the Docker services have completed their startup (i.e. there is no further output in the terminal), then open a second terminal. (In future one may choose to use docker-compose up -d instead)

To run the tests execute go test inside the project folder.

For a full coverage report, try:

go test -coverprofile=coverage.out && go tool cover -html=coverage.out

To shutdown the Docker services, execute docker-compose down -v inside the project folder.

Oracle Setup Checklist

Build Docker Image

Build a Docker image for Oracle, by executing script:

./build_oracle_docker_image.sh

Once the script has successfully completed, you are free to delete the folder used when creating the image:

rm -rf ./test/docker-oracle

Increase Docker's RAM limits

By default, Docker allocates 2gb RAM to each container. To prevent out-of-memory errors when running Oracle, increase Docker's RAM limits:

Docker -> Preferences -> Resources -> Advanced -> Memory, change to 4gb, click Apply & Restart.

Install Oracle Instant Client

Oracle database/sql drivers require dynamic libraries that are part of the Oracle Instant Client installation.

Mac
brew tap InstantClientTap/instantclient
brew install instantclient-basic

License

Package schema is copyright 2018-2021 by Jim Smart and released under the BSD 3-Clause License.

History

  • v0.2.1: Added dialect alias for Vitess driver github.com/vitessio/vitess.
  • v0.2.0: Replaced Table and View methods with ColumnTypes method.
  • v0.1.0: Added schema name to methods and results.
  • v0.0.8: Disabled Oracle tests on Travis.
  • v0.0.7: Added PrimaryKey method. TableNames and ViewNames are now sorted. Improved Oracle testing. Refactored dialect handling.
  • v0.0.6: Fix Oracle quoting strategy. Added support for driver github.com/godror/godror.
  • v0.0.5: Added dialect alias for Snowflake driver github.com/snowflakedb/gosnowflake.
  • v0.0.4: Improved error handling for unknown DB driver types. Test environment now uses Docker.
  • v0.0.3: Minor code cleanups.
  • v0.0.2: Added identifier escaping for methods that query sql.ColumnType.
  • v0.0.1: Started using Go modules.
  • 2019-11-04: Fix for renamed driver struct in github.com/mattn/go-oci8 (Oracle)
  • 2019-11-04: Fix for renamed driver struct in github.com/denisenkom/go-mssqldb (MSSQL)

clickhouse-schema's People

Contributors

jimsmart avatar erayack avatar jarrodhroberson avatar ghstahl avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.