Conversor de SQL para Java, C#, TypeScript, Go e Rust

Cole um CREATE TABLE do MySQL, PostgreSQL ou T-SQL e obtenha a classe de modelo correspondente em Java, C#, TypeScript, Go ou Rust.

CREATE TABLE para classe C#, Java ou TypeScript: equivalência

A ferramenta lê uma instrução CREATE TABLE, extrai o nome da tabela e cada coluna (nome, tipo, NOT NULL) e escreve o modelo correspondente: classe C# ou Java, interface TypeScript, struct Go ou Rust, ou um exemplo de registro em JSON ou XML. Os nomes passam para PascalCase ou camelCase e as colunas sem NOT NULL se tornam opcionais.

Como a tabela é lida

Os comentários são removidos, o nome vem depois de CREATE TABLE (aspas, crases ou colchetes do T-SQL aceitos, prefixo de esquema como dbo. ou public. ignorado) e, em seguida, o conteúdo entre parênteses é dividido nas vírgulas, exceto as de DECIMAL(10, 2). As linhas PRIMARY KEY, FOREIGN KEY, CONSTRAINT, UNIQUE e INDEX são ignoradas. Uma coluna é não nula se tiver NOT NULL ou PRIMARY KEY.

Exemplo

A tabela de exemplo Users (user_id INT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100), is_active BOOLEAN, created_at DATETIME, balance DECIMAL(10, 2), bio TEXT) resulta em C#:
public int UserId { get; set; }
public string Username { get; set; }
public bool? IsActive { get; set; }
public DateTime? CreatedAt { get; set; }
public decimal? Balance { get; set; }
e em TypeScript userId: number; email?: string; createdAt?: Date; balance?: number;.

Limites que você precisa conhecer

  • Um tipo ausente da tabela de equivalência (BLOB, BYTEA, ENUM…) vira string; UUID resulta em Guid em C# e UUID em Java, e em string nas outras linguagens.
  • Apenas uma tabela é processada; sem anotações, sem relações, sem getters e setters em Java (um simples comentário os indica).
  • Go mantém tipos não nulos; Rust usa Option<T> para as colunas opcionais, sem derivações nem imports.
  • As datas dos exemplos JSON e XML usam a hora do momento.

Releia o código gerado antes de integrá-lo. Para apenas reformatar uma consulta, use o formatador SQL.

Perguntas frequentes

Que tipo C# corresponde a um DECIMAL ou DATETIME do SQL?

A ferramenta traduz DECIMAL em decimal, DATETIME e DATE em DateTime, BOOLEAN e BIT em bool, VARCHAR, CHAR e TEXT em string. Uma coluna sem NOT NULL recebe um ponto de interrogação (decimal?, DateTime?), exceto string, que já aceita null. Em Java, as mesmas colunas viram BigDecimal, LocalDateTime, Boolean e String.

Que tipo recebe uma coluna BIGINT?

BIGINT vira long em C#, Long em Java e i64 em Rust, o que evita um estouro acima de 2.147.483.647. SMALLINT resulta em short, Short e i16, TINYINT em byte, Byte e i8. A ferramenta procura primeiro o tipo exato e depois o nome conhecido mais longo contido no tipo: NVARCHAR é assim lido como VARCHAR. Em TypeScript, todos os inteiros continuam number.

A ferramenta lê scripts do SQL Server?

Sim: os colchetes são aceitos em torno dos nomes de tabela, coluna e tipo ([dbo].[Users], [Id] [bigint]), e o prefixo de esquema é ignorado, de modo que [dbo].[Users] resulta na classe Users e public.orders na classe Orders. As linhas CONSTRAINT, como a chave primária CLUSTERED, são ignoradas.

Como são nomeadas as propriedades geradas?

Os nomes de colunas em snake_case passam para PascalCase em C# e Go (user_id vira UserId) e para camelCase em Java e TypeScript (userId). Rust, JSON e XML mantêm o nome original. Go acrescenta uma tag json com o nome original da coluna.

A ferramenta é realmente gratuita?

Sim, todas as ferramentas do Kristools são 100% gratuitas e acessíveis sem cadastro.

Meus dados estão protegidos?

Sim. Todo o processamento é feito diretamente e com segurança no seu navegador. Nenhum dado pessoal é enviado para os nossos servidores.