fix: 导出sql兼容db驱动
This commit is contained in:
@@ -92,14 +92,27 @@ func (s *LogService) StreamLogKeysToCSV(c *gin.Context, writer io.Writer) error
|
|||||||
return fmt.Errorf("failed to write CSV header: %w", err)
|
return fmt.Errorf("failed to write CSV header: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 直接查询所有结果,不使用分批,避免复杂的SQL问题
|
|
||||||
var results []ExportableLogKey
|
var results []ExportableLogKey
|
||||||
err := s.DB.Model(&models.RequestLog{}).
|
|
||||||
Scopes(logFiltersScope(c)).
|
baseQuery := s.DB.Model(&models.RequestLog{}).Scopes(logFiltersScope(c))
|
||||||
Select("key_value, group_name, status_code").
|
|
||||||
Group("key_value, group_name, status_code").
|
// 使用窗口函数获取每个key_value的最新记录
|
||||||
Order("key_value").
|
err := s.DB.Raw(`
|
||||||
Find(&results).Error
|
SELECT
|
||||||
|
key_value,
|
||||||
|
group_name,
|
||||||
|
status_code
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
key_value,
|
||||||
|
group_name,
|
||||||
|
status_code,
|
||||||
|
ROW_NUMBER() OVER (PARTITION BY key_value ORDER BY timestamp DESC) as rn
|
||||||
|
FROM (?) as filtered_logs
|
||||||
|
) ranked
|
||||||
|
WHERE rn = 1
|
||||||
|
ORDER BY key_value
|
||||||
|
`, baseQuery).Scan(&results).Error
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to fetch log keys: %w", err)
|
return fmt.Errorf("failed to fetch log keys: %w", err)
|
||||||
|
Reference in New Issue
Block a user