Bladeren bron

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

qdy 3 maanden geleden
bovenliggende
commit
3cde25b184
3 gewijzigde bestanden met toevoegingen van 21 en 19 verwijderingen
  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 Bestand weergeven

@@ -131,21 +131,21 @@ func (f *DBFactory) QueryParamsNameToJSON(sql string, params map[string]interfac
131 131
 }
132 132
 
133 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 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 144
 // QueryParamsNameToCSV 命名参数查询并返回 CSV 字节数据
145 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 151
 // ExecuteDDL 快捷执行DDL语句

+ 13
- 11
functions/query_csv.go Bestand weergeven

@@ -10,7 +10,7 @@ import (
10 10
 )
11 11
 
12 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 14
 	if sql == "" {
15 15
 		return nil, fmt.Errorf("SQL query cannot be empty")
16 16
 	}
@@ -20,11 +20,11 @@ func QueryToCSV(db *sqlx.DB, sql string) ([]byte, error) {
20 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 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 28
 	if sql == "" {
29 29
 		return nil, fmt.Errorf("SQL query cannot be empty")
30 30
 	}
@@ -34,12 +34,12 @@ func QueryPositionalToCSV(db *sqlx.DB, sql string, params []interface{}) ([]byte
34 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 40
 // QueryParamsNameToCSV 命名参数查询并返回 CSV 字节数据
41 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 43
 	if sql == "" {
44 44
 		return nil, fmt.Errorf("SQL query cannot be empty")
45 45
 	}
@@ -55,11 +55,11 @@ func QueryParamsNameToCSV(db *sqlx.DB, sql string, params map[string]interface{}
55 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 63
 	defer rows.Close()
64 64
 
65 65
 	columns, err := rows.Columns()
@@ -70,9 +70,11 @@ func rowsToCSV(rows *sql.Rows) ([]byte, error) {
70 70
 	var builder strings.Builder
71 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 80
 	for rows.Next() {

+ 2
- 2
functions/query_json.go Bestand weergeven

@@ -40,8 +40,8 @@ func QueryParamsNameToJSON(db *sqlx.DB, sql string, params map[string]interface{
40 40
 func QueryPositionalToJSON(db *sqlx.DB, sql string, params []interface{}) *types.QueryResult {
41 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 45
 	if sql == "" {
46 46
 		return createErrorResult("SQL query cannot be empty", startTime)
47 47
 	}

Laden…
Annuleren
Opslaan