15 incompatibilities detected automatically

Your database migration will break on the first DELETE.Find the risk before you run the script.

Paste your T-SQL (SQL Server) and get an instant syntax audit for PostgreSQL. Spot invalid JOINs, incompatible functions, and dangerous queries before running in production.

๐Ÿ”’ 100% Secure โ€” code never stored</> Analysis via AST Parser + Semantic Regexโšก Results in < 1 second
SQLShifter Advantage

Your team will migrate code without opening file by file.

Upload your repositories in Java, C# (.NET), JavaScript, Python, or PHP and our tool extracts, analyzes, and pinpoints exactly which classes in your system will break after the database migration.

  • Finds queries inside the repository automatically
  • Report with file, line, and extracted SQL โ€” ready for your team
Scan source code for free
PedidoService.java โ€” line 42HIGH RISK
@Query(value = """
    SELECT TOP 100 p.* FROM dbo.Pedidos p
    INNER JOIN dbo.Clientes c ON c.Id = p.ClienteId
    WHERE p.Data > DATEADD(month, -6, GETDATE())
    """, nativeQuery = true)
List<Pedido> findRecentes();

โš  We found a risky query

dbo. ยท TOP ยท DATEADD ยท DELETE/JOIN pattern โ€” incompatible with PostgreSQL

Java

@Query, @NamedNativeQuery, JDBC strings

C# .NET

Dapper, EF FromSqlRaw, @"verbatim"

JS / TS

Template literals, Sequelize, pg

Python

Django .raw(), cursor.execute

PHP

PDO, sqlsrv, $sql variables

Migration Impact Panel

Paste your T-SQL on the left โ€” risk appears on the right instantly.

migration_script.sql โ€” SQL Server (T-SQL)
123456789101112131415161718
Risk Level
HIGH
Guaranteed failure in production
Incompatibilities
4 found
in 2 statements
Critical Issues Detected
  • โŒ

    Lines 1โ€“5: DELETE with INNER JOIN

    PostgreSQL rejects JOIN directly in DELETE. Requires a USING clause.

  • โŒ

    Line 13: Computed column AS (expr)

    Requires GENERATED ALWAYS AS (expr) STORED in PostgreSQL.

  • โŒ

    Line 1: dbo. prefix (schema)

    dbo. does not exist by default in PostgreSQL โ€” use public. or remove it.

  • โš ๏ธ

    Line 18: DATEDIFF does not exist in PostgreSQL

    Use (d2::date - d1::date) or EXTRACT depending on the unit.

PostgreSQL โ€” Translated Code
DELETE FROM funcionarios t
USING pagamentos p
WHERE t.funcionario_id = p.func_id
  AND p.status = 'CANCELADO';

CREATE TABLE funcionarios (
    id SERIAL PRIMARY KEY,
    liquido NUMERIC GENERATED ALWAYS AS
        (salario - COALESCE(desconto, 0)) STORED
);
๐Ÿ”’

Converted and optimized code ready.

Upgrade to unlock the corrected script.

Unlock Corrected Code
The Silent Killers

Errors that pass review and explode in production

Each of these patterns is accepted in SQL Server and causes immediate failure in PostgreSQL.

๐Ÿ—‘๏ธ

DELETE with JOIN

T-SQL accepts DELETE t FROM Table t JOIN. PostgreSQL rejects direct JOIN โ€” requires USING.

โœ— DELETE t FROM t JOIN p ON...
โœ“ DELETE FROM t USING p WHERE...
๐Ÿ“Š

PIVOT โ†’ CASE WHEN

PostgreSQL has no native PIVOT. Matrix reports require SUM(CASE WHEN...) + GROUP BY.

โœ— PIVOT(SUM(val) FOR mes IN...)
โœ“ SUM(CASE WHEN mes='Q1'...)
๐Ÿ“…

DATEDIFF / GETDATE()

DATEDIFF and GETDATE() do not exist in PostgreSQL. NOW() does not exist in SQL Server.

โœ— DATEDIFF(day, d1, GETDATE())
โœ“ (NOW()::date - d1::date)
โš ๏ธ

TRY/CATCH + @@ROWCOUNT

BEGIN TRY and @@ROWCOUNT do not exist in PL/pgSQL โ€” code compiles but silently ignores errors.

โœ— BEGIN TRY ... IF @@ROWCOUNT = 0
โœ“ EXCEPTION WHEN ... IF NOT FOUND

How it works

3 steps from risk to certainty.

๐Ÿ“
Step 1

Upload .sql or repository

Upload SQL scripts or source files (.java, .cs, .pyโ€ฆ) โ€” we extract hidden queries. Nothing is stored.

๐Ÿ”
Step 2

Get the Impact Report

Visual diagnosis with compatibility %, mapped critical points, and expert notes.

โฌ‡๏ธ
Step 3 (Pro)

Export the converted project

Download the full PostgreSQL script โ€” semantics preserved, indexes kept, procedures restructured.

Pay only for what you use

Per-file credits โ€” one-time payment, no subscription.

Free

$0

3 files ยท up to 1000 lines per file

  • โœ“3 lifetime files
  • โœ“Up to 1,000 lines per file
  • โœ“Full impact report
  • โœ“.sql scripts and Java/C#/JS/Python/PHP code
  • โœ•Converted ZIP (paid credits)
  • โœ•Script export
Start for free

Starter

$9.00

5 files

up to 2000 lines per file

One-time payment โ€” credits never expire

Buy credits

Pro

$29.00

15 files

up to 3000 lines per file

One-time payment โ€” credits never expire

Buy credits

Team

$79.00

40 files

up to 5000 lines per file

One-time payment โ€” credits never expire

Buy credits

Business

$199.00

100 files

up to 10000 lines per file

One-time payment โ€” credits never expire

Buy credits