This is an old revision of the document!


Microsoft SQL Server to PostgreSQL Migration

SQLines open source tools can help you transfer data, convert database schema (DDL), views, stored procedures, functions, triggers, queries and SQL scripts from Microsoft SQL Server to PostgreSQL:

  • SQLines Data - Data transfer, schema migration and validation tool
  • SQLines SQL Converter - SQL scripts conversion tool

Databases:

  • Microsoft SQL Server 2016, 2014, 2012, 2008, 2005 and 2000
  • PostgreSQL 10.x and 9.x

Migration Reference

SQL Server to PostgreSQL Migration Tools

Data Types

Converting data types:

SQL Server PostgreSQL
1 BIGINT 64-bit integer BIGINT
2 BINARY(n) Fixed-length byte string BYTEA
3 BIT 1, 0 or NULL BOOLEAN
4 CHAR(n), CHARACTER(n) Fixed-length character string, 1 ⇐ n ⇐ 8000 CHAR(n), CHARACTER(n)
5 DATE Date (year, month and day) DATE
6 DATETIME Date and time with fraction TIMESTAMP(3)
7 DATETIME2(p) Date and time with fraction TIMESTAMP(p)
8 DATETIMEOFFSET(p) Date and time with fraction and time zone TIMESTAMP(p) WITH TIME ZONE
9 DECIMAL(p,s), DEC(p,s) Fixed-point number DECIMAL(p,s), DEC(p,s)
10 DOUBLE PRECISION Double-precision floating-point number DOUBLE PRECISION
11 FLOAT(p) Floating-point number DOUBLE PRECISION
12 IMAGE Variable-length binary data, ⇐ 2G BYTEA
13 INT, INTEGER 32-bit integer INT, INTEGER
14 MONEY 64-bit currency amount MONEY
15 NCHAR(n) Fixed-length Unicode UCS-2 string CHAR(n)
16 NTEXT Variable-length Unicode UCS-2 data, ⇐ 2G TEXT
17 NUMERIC(p,s) Fixed-point number NUMERIC(p,s)
18 NVARCHAR(n) Variable-length Unicode UCS-2 string VARCHAR(n)
19 NVARCHAR(max) Variable-length Unicode UCS-2 data, ⇐ 2G TEXT
20 REAL Single-precision floating-point number REAL
21 ROWVERSION Automatically updated binary data BYTEA
22 SMALLDATETIME Date and time TIMESTAMP(0)
23 SMALLINT 16-bit integer SMALLINT
24 SMALLMONEY 32-bit currency amount MONEY
25 TEXT Variable-length character data, ⇐ 2G TEXT
26 TIME(p) Time (hour, minute, second and fraction) TIME(p)
27 TIMESTAMP Automatically updated binary data BYTEA
28 TINYINT 8-bit unsigned integer, 0 to 255 SMALLINT
29 UNIQUEIDENTIFIER 16-byte GUID (UUID) data CHAR(16)
30 VARBINARY(n) Variable-length byte string, 1 ⇐ n ⇐ 8000 BYTEA
31 VARBINARY(max) Variable-length binary data, ⇐ 2G BYTEA
32 VARCHAR(n) Variable-length character string, 1 ⇐ n ⇐ 8000 VARCHAR(n)
33 VARCHAR(max) Variable-length character data, ⇐ 2G TEXT
34 XML XML data XML

Built-in SQL Functions

Converting SQL functions:

SQL Server PostgreSQL
1 DATEADD Add an interval to datetime INTERVAL expression
2 ISNULL(exp, replacement) Replace NULL with the specified value COALESCE(exp, replacement)