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; Ana 5
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ão | DuckDB 1.5 |
|---|---|
| Compilado com | Sem etapa separada: o comando de execução compila ou interpreta o código |
| Executado com | duckdb -batch -bail -list -noheader -cmd "SET autoinstall_known_extensions=false; SET autoload_known_extensions=false; SET memory_limit='256MB'" < code.sql |
| Limites | 30 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 boxou.headers onmudam o formato. - A aba Entrada não é lida como SQL, mas
read_text('input')a devolve como uma tabela com a colunacontent. Os arquivos enviados no campofilesda API são lidos comread_csv('data.csv')ouread_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
- Esta página em inglês
- Esta página em espanhol
- Outros compiladores em português: Python, C, C++, Java, C#, F#, Go, Rust, PHP, Ruby, Haskell, TypeScript, JavaScript, SQL, Bash, Fortran, Visual Basic, Kotlin, R, Swift, COBOL, Perl, Julia, Pascal, Octave, Assembly, Lua, OCaml, Common Lisp, Erlang, Elixir, Prolog, D, FreeBASIC, Dart, Clojure, Groovy, Scala, Zig, Nim, Crystal, Ada, PowerShell, Racket, Objective-C.
- Todas as 46 linguagens, com versões e tempos de execução
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.