package utils import ( model "LAPP_ETL/models/etl" "fmt" "github.com/go-xorm/xorm" ) func GetTablePK(engine *xorm.Engine, tableName string) ([]string, error) { pkList := make([]string, 0) //获取当前导入表的主键 err := engine.SQL("SELECT COLUMN_NAME as ColumnName FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME=?", tableName).Find(&pkList) if err != nil { return nil, err } return pkList, nil } func GetTableField(engine *xorm.Engine, tableName string) (fieldLi []model.TableField, err error) { fieldLi = make([]model.TableField, 0) sql := fmt.Sprintf(`SELECT syscolumns.name as fieldName,systypes.name as fieldType,syscolumns.isnullable as isNull, syscolumns.length FROM syscolumns,systypes WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id ( '%s' )`, tableName) err = engine.SQL(sql).Find(&fieldLi) if err != nil { return nil, err } return fieldLi, nil }