From 83817e383e973a8ca5284c2c9bd8b0d245c4260f Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Wed, 5 Jan 2022 23:25:16 +0000 Subject: [PATCH] handle mssql properly Signed-off-by: Andrew Thornton --- engine.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/engine.go b/engine.go index b9261c08..4fc83cba 100644 --- a/engine.go +++ b/engine.go @@ -776,14 +776,18 @@ func (engine *Engine) dumpTables(ctx context.Context, tables []*schemas.Table, w } } } - } else { - // In MSSQL we have to use NChar format to get unicode strings. - if dstDialect.URI().DBType == schemas.MSSQL && dstTable.Columns()[i].SQLType.IsText() { - if _, err = io.WriteString(w, "N"); err != nil { + } else if dstDialect.URI().DBType == schemas.MSSQL { + if dstTable.Columns()[i].SQLType.IsBlob() { + // MSSQL uses CONVERT(VARBINARY(MAX), '0xDEADBEEF', 1) + if _, err := fmt.Fprintf(w, "CONVERT(VARBINARY(MAX), '0x%x', 1)", s.String); err != nil { + return err + } + } else { + if _, err = io.WriteString(w, "N'"+strings.ReplaceAll(s.String, "'", "''")+"'"); err != nil { return err } } - + } else { if _, err = io.WriteString(w, "'"+strings.ReplaceAll(s.String, "'", "''")+"'"); err != nil { return err }