db2struct

将一个 mysql 表转换为一个 golang 结构。(Converts a mysql table into a golang struct)

  • Owner: Shelnutt2/db2struct
  • Platform: Linux, Mac, Windows
  • License:: GNU General Public License v3.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

db2struct Build Status Coverage Status GoDoc

The db2struct package produces a usable golang struct from a given database table for use in a .go file.

By reading details from the database about the column structure, db2struct generates a go compatible struct type
with the required column names, data types, and annotations.

Generated datatypes include support for nullable columns sql.NullX types or guregu null.X types
and the expected basic built in go types.

Db2Struct is based/inspired by the work of ChimeraCoder's gojson package
gojson

Usage

go get github.com/Shelnutt2/db2struct/cmd/db2struct
db2struct --host localhost -d test -t test_table --package myGoPackage --struct testTable -p --user testUser

Example

MySQL table named users with four columns: id (int), user_name (varchar(255)), number_of_logins (int(11),nullable), and LAST_NAME (varchar(255), nullable)

Example below uses guregu's null package, but without the option it procuded the sql.NullInt64 and so on.

db2struct --host localhost -d example.com -t users --package example --struct user -p --user exampleUser --guregu --gorm

Output:


package example

type User struct {
  ID              int   `gorm:"column:id"`
  UserName        string `gorm:"column:user_name"`
  NumberOfLogins  null.Int `gorm:"column:number_of_logins"`
  LastName        null.String `gorm:"column:LAST_NAME"`
}

Supported Databases

Currently Supported

  • MariaDB
  • MySQL

Planned Support

  • PostgreSQL
  • Oracle
  • Microsoft SQL Server

MariaDB/MySQL

Structures are created by querying the INFORMATION_SCHEMA.Columns table and then formatting the types, column names,
and metadata to create a usable go compatible struct type.

Supported Datatypes

Currently only a limited number of MariaDB/MySQL datatypes are supported. Initial support includes:

  • tinyint (sql.NullInt64 or null.Int)
  • int (sql.NullInt64 or null.Int)
  • smallint (sql.NullInt64 or null.Int)
  • mediumint (sql.NullInt64 or null.Int)
  • bigint (sql.NullInt64 or null.Int)
  • decimal (sql.NullFloat64 or null.Float)
  • float (sql.NullFloat64 or null.Float)
  • double (sql.NullFloat64 or null.Float)
  • datetime (null.Time)
  • time (null.Time)
  • date (null.Time)
  • timestamp (null.Time)
  • var (sql.String or null.String)
  • enum (sql.String or null.String)
  • varchar (sql.String or null.String)
  • longtext (sql.String or null.String)
  • mediumtext (sql.String or null.String)
  • text (sql.String or null.String)
  • tinytext (sql.String or null.String)
  • binary
  • blob
  • longblob
  • mediumblob
  • varbinary
  • json

Main metrics

Overview
Name With OwnerShelnutt2/db2struct
Primary LanguageGo
Program languageGo (Language Count: 1)
PlatformLinux, Mac, Windows
License:GNU General Public License v3.0
所有者活动
Created At2016-06-02 11:07:24
Pushed At2023-03-06 23:47:57
Last Commit At2023-03-06 18:47:54
Release Count3
Last Release Namev1.0.2 (Posted on )
First Release Namev1.0.0 (Posted on )
用户参与
Stargazers Count551
Watchers Count18
Fork Count123
Commits Count82
Has Issues Enabled
Issues Count18
Issue Open Count9
Pull Requests Count21
Pull Requests Open Count3
Pull Requests Close Count3
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private