package controllers import ( "fmt" "xg_fetl/internal/db_executor" "xg_fetl/internal/global" "xg_fetl/internal/models" "xg_fetl/internal/services" ) func ImportController(outputDir string) { dbType := global.Cfg.ImportConfig.DBConfig.DBType dsn := global.Cfg.ImportConfig.DBConfig.GetDSN() dbName := global.Cfg.ImportConfig.DBConfig.DBName //dbIp := global.Cfg.ImportConfig.DBConfig.IP // baseFilePath := global.Cfg.ExportConfig.BaseFilePath delimiter := global.Cfg.ImportConfig.Delimiter pageSize := global.Cfg.ImportConfig.PageSize // !创建数据库链接 executor, err := db_executor.NewDBExecutor(dbType, dsn) if err != nil { fmt.Println(fmt.Errorf("create db executor failed, err: %v", err)) panic(err) } defer executor.Close() // ! 获取数据库元信息 dbInfo, err := services.GetDBInfoService(dbName, executor) if err != nil { fmt.Println(fmt.Errorf("get db info failed, err: %v", err)) panic(err) } // 创建一个新的 map,将普通表和 LOB 表的信息都放进去 allTables := make(map[string]models.TableInfo, len(dbInfo.Tables)+len(dbInfo.LobTables)) // 将 tableInfoMap 中的表信息添加到 allTables 中 for tableName, tableInfo := range dbInfo.Tables { allTables[tableName] = tableInfo } // 将 lobTableInfoMap 中的表信息添加到 allTables 中 for tableName, tableInfo := range dbInfo.LobTables { allTables[tableName] = tableInfo } services.ReaderMain(dbName, outputDir, allTables, delimiter, pageSize, executor) }