package main import ( "fmt" "log" "testing" "git.x2erp.com/qdy/go-base/types" "git.x2erp.com/qdy/go-db/factory/http" ) func TestQuery(t *testing.T) { // 记录总开始时间 //totalStartTime := time.Now() // 1. 获取HTTP工厂实例 httpFactory, err := http.GetHTTPFactory() if err != nil { t.Fatalf("Failed to get HTTP factory: %v", err) } fmt.Println("HTTP factory created successfully") // 7. 获取Doris工厂实例 //dorisFactory1, err := doris.GetDorisFactory(httpFactory) if err != nil { t.Fatalf("Failed to get Doris factory: %v", err) } fmt.Println("Doris factory created successfully") // 获取Doris配置 //cfg, err := config.GetConfig() if err != nil { t.Fatalf("failed to load config: %v", err) return } sql, queryParams := getSQLWithPaginationSQL(0, 10) // 准备查询请求 queryRequest := types.QueryRequest{ SQL: sql, PositionalParams: queryParams, WriterHeader: false, } httpClient := httpFactory.CreateClient() // 发送POST请求到 /api/query/csv 获取CSV格式数据 resp, err := httpClient.PostWithAuth( "http://localhost:8080/api/query/csv/param", queryRequest, "123", // Bearer Token nil, ) if err != nil { csvData := string(resp.Body()) log.Printf("查询失败:%v", err) log.Printf("csvData--err:%s", csvData) return } if resp.StatusCode() != 200 { log.Printf("\n 询请求失败, 状态码: %d", resp.StatusCode()) } // 获取CSV数据 csvData := string(resp.Body()) log.Printf("\n csvData:%s", csvData) } // getSQLWithPagination 生成带分页的SQL语句(参数模式) // 返回SQL语句和参数映射 func getSQLWithPaginationSQL(startRow, endRow int) (string, []interface{}) { sql := `SELECT CLOTHING_ID, CLOTHING_YEAR, CLOTHING_NAME FROM ( SELECT a.*, ROWNUM as rn FROM ( SELECT * FROM X6_STOCK_DEV.A3_CLOTHING ORDER BY CLOTHING_ID ) a WHERE ROWNUM <= :1 ) WHERE rn > :2` // 创建参数映射 params := []interface{}{ endRow, startRow - 1, // WHERE rn > :start_row 所以是startRow-1 } return sql, params }