PostgreSQL Mysql Veri Tipi Eşleme

Aşağıdaki tabloda PostgreSQL (kaynak) veri türleri ile MySQL veri türleri arasındaki eşleme gösterilmektedir.

PostgreSQL Mysql Veri Tipi Eşleme

Table 10.3 Type mapping

Source Type MySQL Type Comment
INT INT  
SMALLINT SMALLINT  
BIGINT BIGINT  
SERIAL INT Sets AUTO_INCREMENT in its table definition.
SMALLSERIAL SMALLINT Sets AUTO_INCREMENT in its table definition.
BIGSERIAL BIGINT Sets AUTO_INCREMENT in its table definition.
BIT BIT  
BOOLEAN TINYINT(1)  
REAL FLOAT  
DOUBLE PRECISION DOUBLE  
NUMERIC DECIMAL  
DECIMAL DECIMAL  
MONEY DECIMAL(19,2)  
CHAR CHAR/LONGTEXT Depending on its length. MySQL Server 5.6 and higher can have CHAR columns with a length up to 255 characters. Anything larger is migrated as LONGTEXT.
NATIONAL CHARACTER CHAR/LONGTEXT Depending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. In MySQL, a character set of strings depends on the column character set instead of the data type.
VARCHAR VARCHAR/MEDIUMTEXT/LONGTEXT Depending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types.
NATIONAL CHARACTER VARYING VARCHAR/MEDIUMTEXT/LONGTEXT Depending on its length. MySQL Server 5.6 and higher can have VARCHAR columns with a length up to 65535 characters. Anything larger is migrated to one of the TEXT blob types. In MySQL, a character set of strings depends on the column character set instead of the data type.
DATE DATE  
TIME TIME  
TIMESTAMP DATETIME  
INTERVAL TIME  
BYTEA LONGBLOB  
TEXT LONGTEXT  
CIDR VARCHAR(43)  
INET VARCHAR(43)  
MACADDR VARCHAR(17)  
UUID VARCHAR(36)  
XML LONGTEXT  
JSON LONGTEXT  
TSVECTOR LONGTEXT  
TSQUERY LONGTEXT  
ARRAY LONGTEXT  
POINT POINT  
LINE LINESTRING Although LINE length is infinite, and LINESTRING is finite in MySQL, it is approximated.
LSEG LINESTRING A LSEG is like a LINESTRING with only two points.
BOX POLYGON A BOX is a POLYGON with five points and right angles.
PATH LINESTRING  
POLYGON POLYGON  
CIRCLE POLYGON A POLYGON is used to approximate a CIRCLE.
TXID_SNAPSHOT VARCHAR  

MySQL ve PostgreSQL benzer veri tiplerine sahiptir. Bazıları eşdeğerken diğerleri değildir. MySQL'i PostgreSQL geçişine planlarken, aşağıdaki doğru tip eşleme tablosunu hatırlamak önemlidir:

MySQL PostgreSQL
BIGINT BIGINT
BINARY(n) BYTEA
BIT BOOLEAN
CHAR(n), CHARACTER(n) CHAR(n), CHARACTER(n)
DATE DATE
DATETIME TIMESTAMP [WITHOUT TIME ZONE]
DECIMAL(p,s), DEC(p,s) DECIMAL(p,s), DEC(p,s)
DOUBLE DOUBLE PRECISION
FLOAT REAL
INT, INTEGER INT, INTEGER
MEDIUMINT INTEGER
NUMERIC(p,s) NUMERIC(p,s)
SMALLINT SMALLINT
TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB BYTEA
TINYINT SMALLINT
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT TEXT
TIME TIME [WITHOUT TIME ZONE]
TIMESTAMP TIMESTAMP [WITHOUT TIME ZONE]
VARBINARY(n), VARBINARY(max) BYTEA
VARCHAR(n) VARCHAR(n)
VARCHAR(max) TEXT

 

MySQL, 'auto_increment' adlı tamsayıya benzer sütunlar için bağımsız değişkene sahiptir; bu, yeni satır eklendiğinde alanın değerini otomatik olarak artırır. PostgreSQL, SERIAL tipini ve değişikliklerini aynı amaçla kullanır:

MySQL PostgreSQL
BIGINT AUTO_INCREMENT BIGSERIAL
INTEGER AUTO_INCREMENT SERIAL
SMALLINT AUTO_INCREMENT SMALLSERIAL
TINYINT AUTO_INCREMENT SMALLSERIAL

 

PostgreSQL'in aksine, tüm MySQL tamsayı türleri (tinyint, smallint, int, bigint) UNSIGNED özniteliğine sahip olabilir. İmzasız spesifikasyon, yalnızca daha geniş kabul edilebilir değer aralığı ile pozitif sayılar almaya zorlar. MySQL imzasız tiplerin PostgreSQL ile nasıl eşleştirilmesi gerektiği aşağıda açıklanmıştır:

MySQL PostgreSQL
BIGINT UNSIGNED NUMERIC(20)
INT UNSIGNED BIGINT
MEDIUMINT UNSIGNED INTEGER
SMALLINT UNSIGNED INTEGER
TINYINT UNSIGNED INTEGER

 

Tipleri eşlerken karşılaşılan bir diğer zorluk da PostgreSQL'in aksine MySQL'in '0000-00-00' tarih sütunlarına depolamaya izin verdiğini hatırlamaktır. PostgreSQL uzmanları, MySQL'den veri taşırken bu değerleri NULL ile değiştirmeyi önerir. Ancak, bu yaklaşım bir şekilde veritabanı mantığını bozarsa, bu tarih sütunları için başka bir eşleme kullanmayı düşünmelisiniz.

 

Kaynak

Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...