Compilador online

Compilador DuckDB online

Escreva seu código em DuckDB 1.5 abaixo e rode de graça, com entrada, num sandbox nos nossos servidores. Sem cadastro e sem anúncios.

Pela equipe do OnlineCompiler.io. Atualizado em .

Also in EnglishTambién en español

-- Lê o nome e um número da aba Entrada
CREATE TABLE entrada AS
SELECT split_part(content, chr(10), 1) AS nome,
       CAST(split_part(content, chr(10), 2) AS INTEGER) AS n
FROM read_text('input');

SELECT 'Olá, ' || nome || '!' FROM entrada;

SELECT i || ' ao quadrado é ' || (i * i)
FROM (SELECT unnest(range(1, n + 1)) AS i FROM entrada)
ORDER BY i;
Compartilhar gera um link, sem precisar de conta. Salvar guarda o código na sua conta.

Quer conferir uma solução contra várias entradas? O compilador DuckDB com casos de teste roda todas de uma vez e marca cada uma como aprovada ou reprovada.

Como ler a aba Entrada

Antes de apertar Executar, digite na aba Entrada o texto que o programa vai ler. Aqui a entrada padrão já traz o próprio programa SQL, então a aba Entrada não é lida como SQL: read_text('input') devolve o texto dela numa tabela, na coluna content, e as funções de texto do DuckDB separam as linhas:

CREATE TABLE entrada AS SELECT content AS texto FROM read_text('input');  -- a aba Entrada inteira
SELECT string_split(texto, chr(10)) FROM entrada;                         -- uma lista com as linhas
SELECT split_part(texto, chr(10), 1) FROM entrada;                        -- a primeira linha
SELECT CAST(split_part(texto, chr(10), 2) AS INTEGER) FROM entrada;       -- a segunda, como número

A entrada inteira é enviada quando você aperta Executar, então o programa não pode pedir mais nada enquanto roda. Coloque cada valor numa linha, ou separe por espaços, conforme o programa lê.

Versão e limites

VersãoDuckDB 1.5
Compilado comSem etapa separada: o comando de execução compila ou interpreta o código
Executado comduckdb -batch -bail -list -noheader -cmd "SET autoinstall_known_extensions=false; SET autoload_known_extensions=false; SET memory_limit='256MB'" < code.sql
Limites30 segundos, 512 MB de memória, 2 CPUs, 64 KB de saída por fluxo, sem rede

Bom saber

  • Cada execução começa com um banco DuckDB vazio, em memória: crie as tabelas, preencha e consulte tudo no mesmo programa. A execução para no primeiro erro.
  • Os resultados saem no modo list, com as colunas separadas por | e sem linha de cabeçalho, como na página do SQLite. Os comandos com ponto funcionam, então .mode box ou .headers on mudam o formato.
  • A aba Entrada não é lida como SQL, mas read_text('input') a devolve como uma tabela com a coluna content. Os arquivos enviados no campo files da API são lidos com read_csv('data.csv') ou read_json.
  • A memória é limitada a 256 MB, e as extensões não são baixadas.

Rodar DuckDB a partir do seu app

Para rodar DuckDB no seu próprio app, envie o código e a entrada para o endpoint síncrono com uma chave de API, e a saída volta na resposta. É grátis até 100.000 execuções por mês. Documentação da API (em inglês).

O editor acima é um widget que você pode colocar no seu site, blog ou curso. Com o atributo data-locale="pt", os botões aparecem em português. Como incorporar o editor (em inglês).

Outras páginas

Perguntas frequentes

O compilador DuckDB online é grátis?

Sim. Rodar DuckDB nesta página não exige conta e não tem anúncios. Para rodar DuckDB no seu próprio app ou site, a API e o widget são grátis até 100.000 execuções por mês, uso comercial incluído.

Meu programa em DuckDB pode ler entrada?

Sim. Digite a entrada na aba Entrada antes de executar, e o programa a lê com read_text('input'), porque a entrada padrão já traz o próprio código SQL. A entrada inteira é enviada quando você aperta Executar, então o programa não pode pedir mais nada enquanto roda.

Posso usar bibliotecas em DuckDB?

As funções nativas do DuckDB e os leitores de arquivos CSV, JSON e Parquet. Extensões não podem ser instaladas, e os programas não têm acesso à rede.

Quanto tempo um programa pode rodar?

Até 30 segundos, com 512 MB de memória e 2 CPUs. Um programa que ainda estiver rodando aos 30 segundos é interrompido com o código de saída 124, e a saída acima de 64 KB por fluxo é cortada.

Onde meu código roda?

Nos nossos servidores, num sandbox gVisor novo e sem acesso à rede, que é apagado quando a execução termina. Cada execução fica guardada no histórico com a saída; a página de segurança (em inglês) explica o que é armazenado.

Existe uma API para DuckDB?

Sim. Envie o código, o id do compilador duckdb-1.5 e a entrada para https://api.onlinecompiler.io/api/run-code-sync/ com uma chave de API, e a resposta traz a saída, os erros, o código de saída, o tempo e a memória. É grátis até 100.000 execuções por mês, e a mesma chave serve para as outras 45 linguagens. A documentação está em inglês.