feat: implement batch processing for MSSQL extraction and transformation with range handling
This commit is contained in:
@@ -5,30 +5,36 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
func buildExtractQueryMssql(job MigrationJob, columns []ColumnType) string {
|
||||
var sbColumns strings.Builder
|
||||
func buildExtractQueryMssql(job MigrationJob, columns []ColumnType, includeRange bool) string {
|
||||
var sbQuery strings.Builder
|
||||
|
||||
sbQuery.WriteString("SELECT ")
|
||||
|
||||
if len(columns) == 0 {
|
||||
sbColumns.WriteString("*")
|
||||
sbQuery.WriteString("*")
|
||||
} else {
|
||||
for i, col := range columns {
|
||||
sbColumns.WriteString("[")
|
||||
sbColumns.WriteString(col.name)
|
||||
sbColumns.WriteString("]")
|
||||
fmt.Fprintf(&sbQuery, "[%s]", col.name)
|
||||
|
||||
if col.unifiedType == "GEOMETRY" {
|
||||
sbColumns.WriteString(".STAsBinary() AS [")
|
||||
sbColumns.WriteString(col.name)
|
||||
sbColumns.WriteString("]")
|
||||
fmt.Fprintf(&sbQuery, ".STAsBinary() AS [%s]", col.name)
|
||||
}
|
||||
|
||||
if i < len(columns)-1 {
|
||||
sbColumns.WriteString(", ")
|
||||
sbQuery.WriteString(", ")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`SELECT %s FROM [%s].[%s] ORDER BY [%s] ASC`, sbColumns.String(), job.Schema, job.Table, job.PrimaryKey)
|
||||
fmt.Fprintf(&sbQuery, " FROM [%s].[%s]", job.Schema, job.Table)
|
||||
|
||||
if includeRange {
|
||||
fmt.Fprintf(&sbQuery, " WHERE [%s] BETWEEN @minRange AND @maxRange", job.PrimaryKey)
|
||||
}
|
||||
|
||||
fmt.Fprintf(&sbQuery, " ORDER BY [%s] ASC", job.PrimaryKey)
|
||||
|
||||
return sbQuery.String()
|
||||
}
|
||||
|
||||
func buildExtractQueryPostgres(job MigrationJob, columns []ColumnType) string {
|
||||
|
||||
Reference in New Issue
Block a user