tsdump - 数据库表结构的 dump 工具


Apache-2.0
跨平台
Google Go

软件简介

特性

  • 支持将数据库(当前仅支持MySQL)及其表结构的元数据以textmarkdownjsoncsv形式输出。

安装

  • 源代码安装

    $ go get -u github.com/voidint/tsdump

  • 二进制安装

Download

基本使用

$ tsdump --help
NAME:
  tsdump - Database table structure dump tool.

USAGE:
  tsdump [OPTIONS] [database [table ...]]

VERSION:
  0.3.0

AUTHOR:
  voidnt <voidint@126.com>

OPTIONS:
  -D, --debug                 enable debug mode
  -h value, --host value      connect to host (default: "127.0.0.1")
  -P value, --port value      port number to use for connection (default: 3306)
  -u value, --user value      user for login if not current user (default: "voidint")
  -p value, --password value  password to use when connecting to server. If password is not given it's solicited on the tty.
  -V value, --viewer value    output viewer. Optional values: txt|csv|json|md (default: "txt")
  -o value, --output value    write to a file, instead of STDOUT
  --help                      show help
  --version, -v               print the version

COPYRIGHT:
  Copyright (c) 2017, 2018, voidint. All rights reserved.
  • 使用root用户创建一个名为mydb的数据库实例,以及一张student的表。

    CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

    USE mydb;

    CREATE TABLE student (
    sno char(8) NOT NULL COMMENT ‘学号’,
    sname varchar(255) NOT NULL COMMENT ‘姓名’,
    gender char(2) DEFAULT NULL COMMENT ‘性别’,
    native char(20) DEFAULT NULL COMMENT ‘籍贯’,
    birthday datetime DEFAULT NULL COMMENT ‘出生日期’,
    dno char(6) DEFAULT NULL COMMENT ‘所在院系’,
    spno char(8) DEFAULT NULL COMMENT ‘专业代码’,
    classno char(4) DEFAULT NULL COMMENT ‘班级号’,
    entime date DEFAULT NULL COMMENT ‘入校时间’,
    home varchar(40) DEFAULT NULL COMMENT ‘家庭住址’,
    tell varchar(40) DEFAULT NULL COMMENT ‘联系电话’,
    PRIMARY KEY (sno)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=’学生信息表’;

  • 将目标数据库及其所有表的表结构数据以表格形式输出到console

    $ tsdump -h 127.0.0.1 -P 3307 -u root mydb
    Enter Password:
    |----------|---------------|--------------------|
    | DATABASE | CHARACTER SET | COLLATION |
    |----------|---------------|--------------------|
    | mydb | utf8mb4 | utf8mb4_general_ci |
    |----------|---------------|--------------------|

    TABLE: student 学生信息表
    |----------|--------------|----------|-----|---------|---------------|--------------------|----------|
    | COLUMN | DATA TYPE | NULLABLE | KEY | DEFAULT | CHARACTER SET | COLLATION | COMMENT |
    |----------|--------------|----------|-----|---------|---------------|--------------------|----------|
    | sno | char(8) | NO | PRI | | utf8mb4 | utf8mb4_general_ci | 学号 |
    | sname | varchar(255) | NO | | | utf8mb4 | utf8mb4_general_ci | 姓名 |
    | gender | char(2) | YES | | | utf8mb4 | utf8mb4_general_ci | 性别 |
    | native | char(20) | YES | | | utf8mb4 | utf8mb4_general_ci | 籍贯 |
    | birthday | datetime | YES | | | | | 出生日期 |
    | dno | char(6) | YES | | | utf8mb4 | utf8mb4_general_ci | 所在院系 |
    | spno | char(8) | YES | | | utf8mb4 | utf8mb4_general_ci | 专业代码 |
    | classno | char(4) | YES | | | utf8mb4 | utf8mb4_general_ci | 班级号 |
    | entime | date | YES | | | | | 入校时间 |
    | home | varchar(40) | YES | | | utf8mb4 | utf8mb4_general_ci | 家庭住址 |
    | tell | varchar(40) | YES | | | utf8mb4 | utf8mb4_general_ci | 联系电话 |
    |----------|--------------|----------|-----|---------|---------------|--------------------|----------|

  • 将目标数据库下目标表的表结构数据输出到markdown文件

    $ tsdump -h 127.0.0.1 -P 3307 -u root -V md -o ./student.md mydb student

output:

DATABASE CHARACTER SET COLLATION
mydb utf8mb4 utf8mb4_general_ci

student

学生信息表

COLUMN DATA TYPE NULLABLE KEY DEFAULT CHARACTER SET COLLATION COMMENT
sno char(8) NO PRI utf8mb4 utf8mb4_general_ci 学号
sname varchar(255) NO utf8mb4 utf8mb4_general_ci 姓名
gender char(2) YES utf8mb4 utf8mb4_general_ci 性别
native char(20) YES utf8mb4 utf8mb4_general_ci 籍贯
birthday datetime YES 出生日期
dno char(6) YES utf8mb4 utf8mb4_general_ci 所在院系
spno char(8) YES utf8mb4 utf8mb4_general_ci 专业代码
classno char(4) YES utf8mb4 utf8mb4_general_ci 班级号
entime date YES 入校时间
home varchar(40) YES utf8mb4 utf8mb4_general_ci 家庭住址
tell varchar(40) YES utf8mb4 utf8mb4_general_ci 联系电话
  • 将用户权限范围内数据库及其表结构数据输出到csv文件

    $ tsdump -h 127.0.0.1 -P 3307 -u root -V csv > ./mydb.csv

  • 将目标数据库及其所有表的表结构数据输出到JSON文件

    $ tsdump -h 127.0.0.1 -P 3307 -u root -V json mydb > mydb.json