// dbstats 输出 SQLite 库的转债数与K线总数统计。 // // go run ./cmd/dbstats [-db 库路径] package main import ( "context" "database/sql" "flag" "fmt" "os" _ "modernc.org/sqlite" ) func main() { dbPath := flag.String("db", "C:\\Users\\zhouww\\AppData\\Local\\Temp\\stock-analysis-data\\stock.db", "SQLite 数据库文件路径") flag.Parse() db, err := sql.Open("sqlite", *dbPath) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } defer db.Close() db.SetMaxOpenConns(1) ctx := context.Background() var bonds, rows int if err := db.QueryRowContext(ctx, "SELECT COUNT(DISTINCT code), COUNT(*) FROM convertible_kline").Scan(&bonds, &rows); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } fmt.Printf("转债数: %d,K线总数: %d(库: %s)\n", bonds, rows, *dbPath) // 数据范围抽查。 var minDate, maxDate string if err := db.QueryRowContext(ctx, "SELECT MIN(date), MAX(date) FROM convertible_kline").Scan(&minDate, &maxDate); err == nil { fmt.Printf("K线日期范围: %s ~ %s\n", minDate, maxDate) } }