Files
sql-csv-generator/database.go
2025-04-29 18:38:14 +09:30

51 lines
966 B
Go

package main
import (
"database/sql"
"fmt"
_ "github.com/microsoft/go-mssqldb"
)
type Column struct {
Name string
TypeName string
MaxCharacterLength *int
}
func fetchTableMetadata() ([]Column, error) {
connStr := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;encrypt=disable",
host, username, password, port, dbname)
db, err := sql.Open("sqlserver", connStr)
if err != nil {
return nil, err
}
defer db.Close()
query := `
SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tableName;
`
var columns []Column
rows, err := db.Query(query, sql.Named("tableName", table))
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var col Column
err = rows.Scan(&col.Name, &col.TypeName, &col.MaxCharacterLength)
if err != nil {
return nil, err
}
columns = append(columns, col)
}
return columns, nil
}