database

package
v0.0.0-...-201b726 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2020 License: MIT Imports: 15 Imported by: 0

README

数据库


PostgreSQL

PostgreSQL注意事项
  1. PostgreSQL不要安装在路径上有空格的目录中 例如不能安装在(C:\Program Files\)下

MySql

MySql注意事项
  1. 需要设置环境变量 将%MYSQL_HOME%/bin添加到系统环境变量Path中 %MYSQL_HOME% 为MySql安装目录

  2. 文件导出时,需要取消 secure-file-priv 限制 找到mysql安装目录下my.ini文件,在[mysqld]下添加secure_file_priv = '' 保存并退出

    参考

    https://blog.csdn.net/weixin_39631030/article/details/79873936

  3. Mysql 获取Schema中所有表

select table_name from information_schema.tables where table_schema='cccrm340_b2c'

Oracle

Oracle go 驱动配置

https://www.cnblogs.com/jiangyuqin/p/10135963.html

配置完PKG_CONFIG_PATH,在VSCode的终端中执行仍然报错的话, 启动cmd执行 go get github.com/wendal/go-oci8。

LiteIDE 的问题

系统cmd执行 gcc -v , 能正常执行,但在LiteIDE中提示 gcc不是内部或外部命令。

原因: LiteIDE的env中有mingw64或者mingw32的配置。 当配置路径和实际路径不符时就会报错,需要手动修改。

LiteIDE -> 表示 -> 选项 -> LiteEnv 依次修改 system.env win32.env win32-user.env win64.env win64-user.env

把PATH中的mingw相关的配置删除掉。 在系统的PATH环境变量中配置mingw即可。 系统PATH中的配置例:

D:\mingw64\bin;

Sqlite

book.db
C:\Users\bs\go\src\github.com\bettersun\bsgo\http>sqlite3 book.db
SQLite version 3.28.0 2019-04-16 19:49:53
Enter ".help" for usage hints.
sqlite> create table book(book_id INTEGER, book_name TEXT, publish_date TEXT);
sqlite> insert into book values(2001, 'Study Sqlite', '2019/05/10');
sqlite> insert into book values(2001, 'Study Go', '2289/09/12');
sqlite> select * from book;
2001|Study Sqlite|2019/05/10
2001|Study Go|2289/09/12
sqlite>

模板相关

模板种类

表定义辅助信息(主键,唯一索引等) 用单元格注释?? 是否对应JSON列

  • 一个工作表(Sheet)存放一个表的数据,工作表名为表物理名,无表逻辑名 第1行 - 第5行: 列理论名、列物理名,列类型,列长度,非空标志

  • 一个工作表(Sheet)存放一个表的数据,工作表名为表物理名或表逻辑名或其它 第1行: 表逻辑名、表物理名 第2行 - 第6行: 列逻辑名、列物理名,列类型,列长度,非空标志

  • 一个工作表(Sheet)存放多个表的数据 偏移1行: 表逻辑名、表物理名 偏移2行 - 偏移6行: 列逻辑名、列物理名,列类型,列长度,非空标志

数据检查
  1. 使用事先读取的表定义检查
  2. 使用模板中的信息检查

Documentation

Index

Constants

View Source
const (
	// 连接字符串(PostgreSQL)
	CON_STRING_POSTGRE = "host=%s port=%s user=%s password=%s dbname=%s sslmode=disable"
	// 连接字符串(MySql)
	// "用户名:密码@[连接方式](主机名:端口号)/数据库名"
	CON_STRING_MYSQL = "%s:%s@%s(%s:%s)/%s"

	// 连接字符串(Oracle)
	// "用户名/密码@主机名:端口号/数据库名"
	CON_STRING_ORACLE = "%s/%s@%s:%s/%s"

	// 数据库类型
	DB_TYPE_POSTGRE   string = "1" // PostgreSQL
	DB_TYPE_MYSQL     string = "2" // MySQL
	DB_TYPE_ORACLE    string = "3" // Oracle
	DB_TYPE_SQLSERVER string = "4" // SqlServer
	DB_TYPE_SQLITE    string = "5" // Sqlites

	// 表替换用占位符
	PLACEHOLDER_TABLE = "#TABLE#"
	// 导出全部数据用SQL
	DEFALT_SQL = " select * from " + PLACEHOLDER_TABLE + " "
)
View Source
const DEFINE_SHEET_INDEX_NONE int = 0

表定义配置文件 工作表下标(不使用下标的场合,值设置为0)

View Source
const DEFINE_TYPE_ONE_FILE_MULTI_DEFINE string = "2"
View Source
const DEFINE_TYPE_ONE_FILE_ONE_DEFINE string = "1"

/ 表定义种类常量

Variables

View Source
var S_BOOL = []string{"bool", "boolean"}
View Source
var S_DATE_TIME = []string{"date", "time"}
View Source
var S_JSON = []string{"json", "jsonb"}
View Source
var S_NUMBER = []string{"integer", "number", "int"}
View Source
var S_TEXT = []string{"char", "varchar", "varchar2", "text"}
View Source
var S_YES = []string{"○", "〇", "Y"}

Functions

func Connect

func Connect(conConfig ConnectConfig) (*sql.DB, error)

连接数据库

func ExportMySqlCSV

func ExportMySqlCSV(conConfig ConnectConfig, pathMySql string, tableName string, csvFile string) error

导出CSV my.ini文件的secure-file-priv需要设置成空字符串 secure-file-priv=""

func ExportPostgreCSV

func ExportPostgreCSV(conConfig ConnectConfig, pathPsql string, tableName string, csvFile string) error

导出CSV

func Retreive

func Retreive(db *sql.DB, tableName string, sql string) ([]map[string]interface{}, error)

获取数据库表数据 返回值为Map的切片, Map的Key是列物理名, Map的Value是列值

func RunCommandMysql

func RunCommandMysql(conConfig ConnectConfig, pathMySql string, sql string) error

mysql.exe 执行sql

Types

type ColumnInfo

type ColumnInfo struct {
	No                string
	ColumnLogicalName string
	ColumnName        string
	Type              string
	JsonItem          []JsonItemInfo
	Length            int
	LengthEx          int
	PK                bool
	NotNull           bool
	Default           string
	Description       string
	Remark            string
	IsJson            bool
	Data              string
}

type ConnectConfig

type ConnectConfig struct {
	// 数据库类型
	DbType string `yaml:"dbType"`

	Host     string `yaml:"host"`     // 数据库服务器名或IP
	Port     string `yaml:"port"`     // 端口
	Network  string `yaml:"network"`  // 连接方式
	User     string `yaml:"user"`     // 用户名
	Password string `yaml:"password"` // 密码
	Schema   string `yaml:"schema"`   // 数据库名(Schema)
}

func ReadConnectConfig

func ReadConnectConfig(configFile string) (conConfig ConnectConfig, err error)

读取数据库配置

type DefineConfigOneFileMultiDefine

type DefineConfigOneFileMultiDefine struct {
	DefineSheetNamePart  []string     `yaml:"defineSheetNamePart"`
	ExcludeSheetNamePart []string     `yaml:"excludeSheetNamePart"`
	Detail               DefineDetail `yaml:"detail"`
}

表定义配置

type DefineConfigOneFileOneDefine

type DefineConfigOneFileOneDefine struct {
	DefineSheetIndex    int          `yaml:"defineSheetIndex"`
	DefineSheetNamePart []string     `yaml:"defineSheetNamePart"`
	Detail              DefineDetail `yaml:"detail"`
}

表定义配置

type DefineDetail

type DefineDetail struct {
	CellTableLogicalName string `yaml:"cellTableLogicalName"`
	CellTableName        string `yaml:"cellTableName"`
	ColNo                string `yaml:"colNo"`
	ColColumnLogicalName string `yaml:"colColumnLogicalName"`
	ColColumnName        string `yaml:"colColumnName"`
	ColPK                string `yaml:"colPK"`
	ColType              string `yaml:"colType"`
	ColLength            string `yaml:"colLength"`
	ColNotNull           string `yaml:"colNotNull"`
	ColDefault           string `yaml:"colDefault"`
	ColDescription       string `yaml:"colDescription"`
	ColRemark            string `yaml:"colRemark"`
	StartRow             int    `yaml:"startRow"`
	LastRow              int

	// JSON(JSONB)项目
	ColItemLogicalName string `yaml:"colItemLogicalName"`
	ColItemName        string `yaml:"colItemName"`
	ColItemType        string `yaml:"colItemType"`
	ColItemLength      string `yaml:"colItemLength"`
}

type DefineIn

type DefineIn struct {

	// 表设计文件种类
	DefineType []string `yaml:"defineType"`
	// 表设计文件
	DefineFile []string `yaml:"defineFile"`

	// 表定义配置文件
	DefineConfigOneFileOneDefine    string `yaml:"defineConfigOneFileOneDefine"`
	DefineConfigOneFileMultiDefine  string `yaml:"defineConfigOneFileMultiDefine"`
	DefineConfigOneSheetMultiDefine string `yaml:"defineConfigOneSheetMultiDefine"`

	// 表设计文件(XLSX)
	DefineContentFile string `yaml:"defineContentFile"`
}

表定义输入

type JsonItemInfo

type JsonItemInfo struct {
	ItemNo          string
	ItemLogicalName string
	ItemName        string
	ItemType        string
	ItemLength      int
	ItemLengthEx    int
}

JSON(JSONB)项目

type PostgreConfig

type PostgreConfig struct {
	// PostgreSQL psql.exe全路径
	PathPsql string `yaml:"pathPsql"`
}

Postgre配置

func ReadPostgreConfig

func ReadPostgreConfig(configFile string) (postgreConfig PostgreConfig, err error)

读取Postgre相关配置

type TableDefine

type TableDefine struct {
	TableLogicalName string
	TableName        string
	Column           []ColumnInfo
	ExInfo           string
	HasJsonColumn    bool
}

func GetDefine

func GetDefine(defIn DefineIn) (tableDefine []TableDefine, err error)

获取表定义

func GetTableDefine

func GetTableDefine(defInFile string) (tableDefine []TableDefine, err error)

获取表定义

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL