参考:表结构操作
文章目录
1、获取数据库信息
1、DBMetas():获取表结构信息
这个方法我直接点进去可以看到他其实是返回一个Table对象数组,然后每一个Table就是包含了表的元数据信息,很多属性其实不知道是干嘛的,但是有一些还是比较清楚地.
// DBMetas Retrieve all tables, columns, indexes' informations from database.
func (engine *Engine) DBMetas() ([]*core.Table, error) {}
2、TableInfo(Bean):获取对应表结构信息
这个方法是根据传入的结构体映射来获取对应的Table元数据信息的。看一下这个方法的定义:
// TableInfo get table info according to bean's content
func (engine *Engine) TableInfo(bean interface{}) *Table {}
2、获取表信息
1、CreateTables(beans):根据结构体创建表
他这个方法应该是支持批量的创建的,看这边传入的是一个不定变量的参数,看一下源代码:
// CreateTables create tabls according bean
func (engine *Engine) CreateTables(beans ...interface{}) error {}
2、IsTableEmpty():判断表中是否有数据
这个方法感觉是简化了一步,正常判断数据应该是根据count的数量来查询,这个应该是直接给你计算了。
3、IsTableExist():判断表是否存在
这个没得说,sql都能写出来
4、DropTables(beans):批量删除表
这个方法传入的也是不定参数,支持批量删除
3、索引
1、CreateIndexes(bean):创建索引
这个方法好像是根据tag中的标签来创建的,这边传入的是一个Bean对象,映射到数据库表的实体对象
// CreateIndexes create indexes
func (engine *Engine) CreateIndexes(bean interface{}) error {}
2、CreateUniques(Bean):创建唯一索引
这个方法和上面那个很类似,这个是创建唯一索引的方法
// CreateUniques create uniques
func (session *Session) CreateUniques(bean interface{}) error {}
注意: 这两个方法好像不会判断索引是否存在,如果一个索引已经存在的情况,再去创建会报错,我看源代码好像是没有对应的删除或者判断的操作。
4、同步数据库结构
这个不知道作用是咋样,因为基本同步数据库结构是发生在不同的数据库之间,这边看的话他是用一个数据库引擎,同步的是同一个库的内容,还是说我这边理解有问题,建议查看原文:同步数据库结构
5、导入导出SQL脚本
这个功能感觉还是比较使用的,像你在navicate中的导入导出操作基本也是通过这种io的方式去操作的。
1、导入SQL脚本
这个有两个方法,一个是从文件中导入,一个是从Reader对象中导入:
engine.Import(r io.Reader) //从Reader中导入
engine.ImportFile(fpath string) //从文件中导入
2、导出SQL脚本
有两个方法,一个是导出到文件,一个是导出到writer对象,可能后续会有操作:
engine.DumpAll(w io.Writer) //导出到writer对象
engine.DumpAllFile(fpath string) //导出到File中