Skip to content

Type Mappings

sql-splitter handles 50+ data type mappings during conversion.

MySQLPostgreSQLSQLiteMSSQL
TINYINTSMALLINTINTEGERTINYINT
SMALLINTSMALLINTINTEGERSMALLINT
MEDIUMINTINTEGERINTEGERINT
INTINTEGERINTEGERINT
BIGINTBIGINTINTEGERBIGINT
FLOATREALREALREAL
DOUBLEDOUBLE PRECISIONREALFLOAT
DECIMAL(p,s)DECIMAL(p,s)REALDECIMAL(p,s)
MySQLPostgreSQLSQLiteMSSQL
CHAR(n)CHAR(n)TEXTCHAR(n)
VARCHAR(n)VARCHAR(n)TEXTVARCHAR(n)
TEXTTEXTTEXTTEXT
MEDIUMTEXTTEXTTEXTNVARCHAR(MAX)
LONGTEXTTEXTTEXTNVARCHAR(MAX)

CHAR, VARCHAR, and TEXT are valid MSSQL types and pass through unchanged.

MySQLPostgreSQLSQLiteMSSQL
BINARY(n)BYTEABLOBBINARY(n)
VARBINARY(n)BYTEABLOBVARBINARY(n)
BLOBBYTEABLOBVARBINARY(MAX)
MEDIUMBLOBBYTEABLOBVARBINARY(MAX)
LONGBLOBBYTEABLOBVARBINARY(MAX)
MySQLPostgreSQLSQLiteMSSQL
DATEDATETEXTDATE
TIMETIMETEXTTIME
DATETIMETIMESTAMPTEXTDATETIME2
TIMESTAMPTIMESTAMPTEXTTIMESTAMP

MySQL YEAR and TIMESTAMP (for MSSQL targets) are not rewritten and pass through unchanged.

MySQLPostgreSQLSQLiteMSSQL
TINYINT(1)BOOLEANINTEGERBIT

The BOOL/BOOLEAN aliases are not rewritten—only the literal TINYINT(1) form is detected.

MySQLPostgreSQLSQLiteMSSQL
INT AUTO_INCREMENTSERIALINTEGER PRIMARY KEYINT IDENTITY(1,1)
BIGINT AUTO_INCREMENTBIGSERIALINTEGER PRIMARY KEYBIGINT IDENTITY(1,1)
MySQLPostgreSQLSQLiteMSSQL
JSONJSONBTEXTNVARCHAR(MAX)

MySQL ENUMs are converted to:

  • PostgreSQL: VARCHAR(255) (a warning suggests adding a CHECK constraint manually)
  • SQLite: TEXT
  • MSSQL: NVARCHAR(255)

PostgreSQL UUID is converted to:

  • MySQL: VARCHAR(36)
  • SQLite: TEXT
  • MSSQL: UNIQUEIDENTIFIER

PostgreSQL array types (e.g. integer[]) generate a warning but are not converted—they pass through unchanged. The warning suggests using JSON in the target dialect.

These features generate warnings during conversion:

  • Custom types (CREATE TYPE) - skipped when converting from PostgreSQL
  • Triggers (CREATE TRIGGER) - skipped when converting from PostgreSQL
  • Stored procedures and functions (CREATE PROCEDURE/CREATE FUNCTION) - skipped when converting from PostgreSQL
  • Table inheritance (INHERITS)
  • Partitioning (PARTITION BY, when converting PostgreSQL to SQLite)
  • MySQL UNSIGNED/ZEROFILL modifiers (removed)

See Known Limitations for the full list of skipped and lossily rewritten constructs.