Просмотр исходного кода

增加参数。csv是否包含表头

qdy 3 месяцев назад
Родитель
Сommit
3cde25b184
3 измененных файлов: 21 добавлений и 19 удалений
  1. 6
    6
      factory/db_factory.go
  2. 13
    11
      functions/query_csv.go
  3. 2
    2
      functions/query_json.go

+ 6
- 6
factory/db_factory.go Просмотреть файл

131
 }
131
 }
132
 
132
 
133
 // QueryToCSV 快捷查询,直接返回 CSV 字符串(包含表头)
133
 // QueryToCSV 快捷查询,直接返回 CSV 字符串(包含表头)
134
-func (f *DBFactory) QueryToCSV(sql string) ([]byte, error) {
135
-	return functions.QueryToCSV(f.db, sql)
134
+func (f *DBFactory) QueryToCSV(sql string, writerHeader bool) ([]byte, error) {
135
+	return functions.QueryToCSV(f.db, sql, writerHeader)
136
 }
136
 }
137
 
137
 
138
 // QueryParamsToCSV 位置参数查询并返回 CSV 字节数据
138
 // QueryParamsToCSV 位置参数查询并返回 CSV 字节数据
139
-func (f *DBFactory) QueryPositionalToCSV(sql string, params []interface{}) ([]byte, error) {
139
+func (f *DBFactory) QueryPositionalToCSV(sql string, writerHeader bool, params []interface{}) ([]byte, error) {
140
 
140
 
141
-	return functions.QueryPositionalToCSV(f.db, sql, params)
141
+	return functions.QueryPositionalToCSV(f.db, sql, writerHeader, params)
142
 }
142
 }
143
 
143
 
144
 // QueryParamsNameToCSV 命名参数查询并返回 CSV 字节数据
144
 // QueryParamsNameToCSV 命名参数查询并返回 CSV 字节数据
145
 // params 可以是 map[string]interface{} 或结构体
145
 // params 可以是 map[string]interface{} 或结构体
146
-func (f *DBFactory) QueryParamsNameToCSV(sql string, params map[string]interface{}) ([]byte, error) {
146
+func (f *DBFactory) QueryParamsNameToCSV(sql string, writerHeader bool, params map[string]interface{}) ([]byte, error) {
147
 
147
 
148
-	return functions.QueryParamsNameToCSV(f.db, sql, params)
148
+	return functions.QueryParamsNameToCSV(f.db, sql, writerHeader, params)
149
 }
149
 }
150
 
150
 
151
 // ExecuteDDL 快捷执行DDL语句
151
 // ExecuteDDL 快捷执行DDL语句

+ 13
- 11
functions/query_csv.go Просмотреть файл

10
 )
10
 )
11
 
11
 
12
 // QueryToCSV 无参数查询并返回 CSV 字节数据
12
 // QueryToCSV 无参数查询并返回 CSV 字节数据
13
-func QueryToCSV(db *sqlx.DB, sql string) ([]byte, error) {
13
+func QueryToCSV(db *sqlx.DB, sql string, writerHeader bool) ([]byte, error) {
14
 	if sql == "" {
14
 	if sql == "" {
15
 		return nil, fmt.Errorf("SQL query cannot be empty")
15
 		return nil, fmt.Errorf("SQL query cannot be empty")
16
 	}
16
 	}
20
 		return nil, fmt.Errorf("query execution failed: %v", err)
20
 		return nil, fmt.Errorf("query execution failed: %v", err)
21
 	}
21
 	}
22
 
22
 
23
-	return rowsToCSV(rows)
23
+	return rowsToCSV(rows, writerHeader)
24
 }
24
 }
25
 
25
 
26
 // QueryParamsToCSV 位置参数查询并返回 CSV 字节数据
26
 // QueryParamsToCSV 位置参数查询并返回 CSV 字节数据
27
-func QueryPositionalToCSV(db *sqlx.DB, sql string, params []interface{}) ([]byte, error) {
27
+func QueryPositionalToCSV(db *sqlx.DB, sql string, writerHeader bool, params []interface{}) ([]byte, error) {
28
 	if sql == "" {
28
 	if sql == "" {
29
 		return nil, fmt.Errorf("SQL query cannot be empty")
29
 		return nil, fmt.Errorf("SQL query cannot be empty")
30
 	}
30
 	}
34
 		return nil, fmt.Errorf("query execution failed: %v", err)
34
 		return nil, fmt.Errorf("query execution failed: %v", err)
35
 	}
35
 	}
36
 
36
 
37
-	return rowsToCSV(rows)
37
+	return rowsToCSV(rows, writerHeader)
38
 }
38
 }
39
 
39
 
40
 // QueryParamsNameToCSV 命名参数查询并返回 CSV 字节数据
40
 // QueryParamsNameToCSV 命名参数查询并返回 CSV 字节数据
41
 // params 可以是 map[string]interface{} 或结构体
41
 // params 可以是 map[string]interface{} 或结构体
42
-func QueryParamsNameToCSV(db *sqlx.DB, sql string, params map[string]interface{}) ([]byte, error) {
42
+func QueryParamsNameToCSV(db *sqlx.DB, sql string, writerHeader bool, params map[string]interface{}) ([]byte, error) {
43
 	if sql == "" {
43
 	if sql == "" {
44
 		return nil, fmt.Errorf("SQL query cannot be empty")
44
 		return nil, fmt.Errorf("SQL query cannot be empty")
45
 	}
45
 	}
55
 		return nil, fmt.Errorf("query execution failed: %v", err)
55
 		return nil, fmt.Errorf("query execution failed: %v", err)
56
 	}
56
 	}
57
 
57
 
58
-	return rowsToCSV(rows)
58
+	return rowsToCSV(rows, writerHeader)
59
 }
59
 }
60
 
60
 
61
-// / rowsToCSV 公共方法:将查询结果转换为 CSV 字节数据
62
-func rowsToCSV(rows *sql.Rows) ([]byte, error) {
61
+// rowsToCSV 公共方法:将查询结果转换为 CSV 字节数据
62
+func rowsToCSV(rows *sql.Rows, writerHeader bool) ([]byte, error) {
63
 	defer rows.Close()
63
 	defer rows.Close()
64
 
64
 
65
 	columns, err := rows.Columns()
65
 	columns, err := rows.Columns()
70
 	var builder strings.Builder
70
 	var builder strings.Builder
71
 	writer := csv.NewWriter(&builder)
71
 	writer := csv.NewWriter(&builder)
72
 
72
 
73
-	// 写入表头
74
-	if err := writer.Write(columns); err != nil {
75
-		return nil, fmt.Errorf("failed to write CSV header: %v", err)
73
+	// 根据参数决定是否写入表头
74
+	if writerHeader {
75
+		if err := writer.Write(columns); err != nil {
76
+			return nil, fmt.Errorf("failed to write CSV header: %v", err)
77
+		}
76
 	}
78
 	}
77
 
79
 
78
 	for rows.Next() {
80
 	for rows.Next() {

+ 2
- 2
functions/query_json.go Просмотреть файл

40
 func QueryPositionalToJSON(db *sqlx.DB, sql string, params []interface{}) *types.QueryResult {
40
 func QueryPositionalToJSON(db *sqlx.DB, sql string, params []interface{}) *types.QueryResult {
41
 	startTime := time.Now()
41
 	startTime := time.Now()
42
 
42
 
43
-	fmt.Printf("positionalParams: %s", params)
44
-	fmt.Printf("sql: %s", sql)
43
+	//fmt.Printf("positionalParams: %s", params)
44
+	//fmt.Printf("sql: %s", sql)
45
 	if sql == "" {
45
 	if sql == "" {
46
 		return createErrorResult("SQL query cannot be empty", startTime)
46
 		return createErrorResult("SQL query cannot be empty", startTime)
47
 	}
47
 	}

Загрузка…
Отмена
Сохранить