67 lines
1.3 KiB
Go
67 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
)
|
|
|
|
func main() {
|
|
dsn := strings.TrimSpace(os.Getenv("MYSQL_DSN"))
|
|
if dsn == "" {
|
|
panic("MYSQL_DSN is required")
|
|
}
|
|
db, err := sql.Open("mysql", dsn)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer db.Close()
|
|
for _, table := range []string{
|
|
"vehicle_data_source",
|
|
"vehicle_daily_mileage_source",
|
|
"vehicle_daily_mileage",
|
|
"vehicle",
|
|
"vehicle_identifier",
|
|
} {
|
|
var name, ddl string
|
|
if err := db.QueryRow("SHOW CREATE TABLE "+table).Scan(&name, &ddl); err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Printf("=== %s ===\n%s\n", name, ddl)
|
|
}
|
|
rows, err := db.Query("SELECT * FROM vehicle_data_source WHERE id = 661200")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer rows.Close()
|
|
columns, err := rows.Columns()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
if rows.Next() {
|
|
values := make([]any, len(columns))
|
|
pointers := make([]any, len(columns))
|
|
for i := range values {
|
|
pointers[i] = &values[i]
|
|
}
|
|
if err := rows.Scan(pointers...); err != nil {
|
|
panic(err)
|
|
}
|
|
record := make(map[string]any, len(columns))
|
|
for i, column := range columns {
|
|
switch value := values[i].(type) {
|
|
case []byte:
|
|
record[column] = string(value)
|
|
default:
|
|
record[column] = value
|
|
}
|
|
}
|
|
data, _ := json.Marshal(record)
|
|
fmt.Printf("=== source_661200 ===\n%s\n", data)
|
|
}
|
|
}
|