MS SQL ve PostgreSQL de ki Uyumsuzluklar

Bu yazımızda MSSQL ile PostgreSQL arasında ki uyumsuzluklardan bazılarını ele alacağız. Bu uyumsuzluklara hakim olarak otomatikleştirerek oluşturma süreçlerini gerçekleştirebilir ve MS SQL ‘den PostgreSQL ‘e geçişlerinizi hızlıca sağlayabilirsiniz.

DATEPART

DATEPART , PostgreSQL de ki DATE_PART ile değiştirilmelidir.

MS SQL:

DATEPART( datepart , date )

PostgreSQL:

date_part( text , timestamp )
date_part( text , interval )

ISNULL

ISNULL fonksiyonu, PostgreSQL de COALESCE fonksiyonu ile değiştirilmelidir.

MS SQL Server:

ISNULL(exp, replacement)

PostgreSQL:

COALESCE(exp, replacement)

SPACE

SQL Server da ki SPACE fonksiyonu, PostgreSQL de ki REPEAT fonksiyonu ile değiştirilmelidir.

MS SQL Server:

SPACE($n)

PostgreSQL:

REPEAT(‘ ’, $n)

DATEADD

PostgreSQL, SQL Server da ki DATEADD fonksiyonu gibi bir hizmetin karşılığı bulunmamaktadır. Aynı sonuçları elde etmek için CURRENT_DATE + INTERVAL gibi kullanımlar yaşanabilir.

MS SQL Server:

--Add 2 day to the current date
SELECT DATEADD(day, 2, GETDATE());

PostgreSQL:

--Add 2 day to the current date
SELECT CURRENT_DATE + INTERVAL ‘2 day’;

String Concatenation

Karakter birleştirme için SLQ Server da ‘+’ ifadesi kullanılırken PostgreSQL de ‘||’ ifadesi kullanılmaktadır.

MS SQL Server:

SELECT FirstName + LastName FROM employee;

PostgreSQL:

SELECT FirstName || LastName FROM employee;

CHARINDEX

SQL Server da ki CHARINDEX fonksiyonun yerine PostgreSQL de ki POSITION fonksiyonu ile değiştirebilirsiniz.

MS SQL Server:

SELECT CHARINDEX('our', 'resource');

PostgreSQL:

SELECT POSITION('our' in 'resource');

GETDATE

Getdate fonksiyonu geçerli tarih ve saat bilgisini döndürür.PostgreSQL de aynı işlevi yapan NOV fonksiyonu bulunmaktadır.

MS SQL Server:

SELECT GETDATE();

PostgreSQL:

SELECT NOW();

SQL Server dan PostgreSQL ‘e geçiş yapacaksınız aşağıdaki araçları kullanmanızı öneririm. (Fakat kullanmadan önce testlerinizi mutlaka yapın.)

1.Pgloader

2.Sqlserver2pgsql

 

Data Type Mapping

Microsoft SQL Server PostgreSQL
BIGINT 64-bit integer BIGINT
BINARY(n) Fixed length byte string BYTEA
BIT 1, 0 or NULL BOOLEAN
CHAR(n) Fixed length char string, 1 <= n <= 8000 CHAR(n)
VARCHAR(n) Variable length char string, 1 <= n <= 8000 VARCHAR(n)
VARCHAR(max) Variable length char string, <= 2GB TEXT
VARBINARY(n) Variable length byte string , 1 <= n <= 8000 BYTEA
VARBINARY(max) Variable length byte string , <= 2GB BYTEA
NVARCHAR(n) Variable length Unicode UCS-2 string VARCHAR(n)
NVARCHAR(max) Variable length Unicode UCS-2 data, <= 2GB TEXT
TEXT Variable length character data, <= 2GB TEXT
NTEXT Variable length Unicode UCS-2 data, <= 2GB TEXT
DOUBLE PRECISION Double precision floating point number DOUBLE PRECISION
FLOAT(p) Floating point number DOUBLE PRECISION
INTEGER 32 bit integer INTEGER
NUMERIC(p,s) Fixed point number NUMERIC(p,s)
DATE Date includes year, month and day DATE
DATETIME Date and Time with fraction TIMESTAMP(3)
DATETIME2(p) Date and Time with fraction TIMESTAMP(n)
DATETIMEOFFSET(p) Date and Time with fraction and time zone TIMESTAMP(p) WITH TIME ZONE
SMALLDATETIME Date and Time TIMESTAMP(0)
TINYINT 8 bit unsigned integer, 0 to 255 SMALLINT
UNIQUEIDENTIFIER 16 byte GUID(UUID) data CHAR(16)
ROWVERSION Automatically updated binary data BYTEA
SMALLMONEY 32 bit currency amount MONEY
IMAGE Variable length binary data, <= 2GB BYTEA

Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *