package main import ( "fmt" "strings" ) func buildExtractQueryMssql(job MigrationJob, columns []ColumnType) string { var sbColumns strings.Builder if len(columns) == 0 { sbColumns.WriteString("*") } else { for i, col := range columns { sbColumns.WriteString("[") sbColumns.WriteString(col.name) sbColumns.WriteString("]") if col.unifiedType == "GEOMETRY" { sbColumns.WriteString(".STAsWKB() AS [") sbColumns.WriteString(col.name) sbColumns.WriteString("]") } if i < len(columns)-1 { sbColumns.WriteString(", ") } } } return fmt.Sprintf(`SELECT %s FROM [%s].[%s] ORDER BY [%s] ASC`, sbColumns.String(), job.Schema, job.Table, job.PrimaryKey) } func buildExtractQueryPostgres(job MigrationJob, columns []ColumnType) string { var sbColumns strings.Builder if len(columns) == 0 { sbColumns.WriteString("*") } else { for i, col := range columns { if col.unifiedType == "GEOMETRY" { sbColumns.WriteString(`ST_AsEWKB("`) sbColumns.WriteString(col.name) sbColumns.WriteString(`") AS "`) sbColumns.WriteString(col.name) sbColumns.WriteString(`"`) } else { sbColumns.WriteString(`"`) sbColumns.WriteString(col.name) sbColumns.WriteString(`"`) } if i < len(columns)-1 { sbColumns.WriteString(", ") } } } return fmt.Sprintf(`SELECT %s FROM "%s"."%s" ORDER BY "%s" ASC`, sbColumns.String(), job.Schema, job.Table, job.PrimaryKey) }