Initial Commit
This commit is contained in:
50
database.go
Normal file
50
database.go
Normal file
@@ -0,0 +1,50 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user