Files
im_server/scripts/query_sql.go
T

62 lines
1.1 KiB
Go

//go:build ignore
package main
import (
"database/sql"
"fmt"
"os"
"strings"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dsn := strings.TrimPrefix(os.Getenv("IM_MYSQL_DSN"), "mysql://")
query := os.Getenv("IM_SQL_QUERY")
if dsn == "" || query == "" {
fatal("IM_MYSQL_DSN and IM_SQL_QUERY are required")
}
db, err := sql.Open("mysql", dsn)
if err != nil {
fatal(err)
}
defer db.Close()
rows, err := db.Query(query)
if err != nil {
fatal(err)
}
defer rows.Close()
cols, err := rows.Columns()
if err != nil {
fatal(err)
}
fmt.Println(strings.Join(cols, "\t"))
for rows.Next() {
values := make([]sql.NullString, len(cols))
scan := make([]any, len(cols))
for i := range values {
scan[i] = &values[i]
}
if err := rows.Scan(scan...); err != nil {
fatal(err)
}
out := make([]string, len(cols))
for i, value := range values {
if value.Valid {
out[i] = value.String
}
}
fmt.Println(strings.Join(out, "\t"))
}
if err := rows.Err(); err != nil {
fatal(err)
}
}
func fatal(v any) {
fmt.Fprintln(os.Stderr, v)
os.Exit(1)
}