Instalação
Para baixar o ClickHouse, execute:Execute
Se você apenas baixou o ClickHouse, mas não o instalou, use
./clickhouse client em vez de clickhouse-client.
Para ver a lista completa de opções de linha de comando, consulte Opções de linha de comando.
Conectar ao ClickHouse Cloud
As informações do seu serviço no ClickHouse Cloud estão disponíveis no console do ClickHouse Cloud. Selecione o serviço ao qual você deseja se conectar e clique em Connect:Escolha Native, e os detalhes serão exibidos junto com um exemplo de comando
clickhouse-client:
Armazenando conexões em um arquivo de configuração
Você pode armazenar os detalhes de conexão de um ou mais servidores ClickHouse em um arquivo de configuração. O formato é o seguinte:Para focar na sintaxe da consulta, os exemplos a seguir omitem os detalhes da conexão (
--host, --port etc.). Lembre-se de adicioná-los ao usar os comandos.Modo interativo
Usando o modo interativo
Para executar o ClickHouse em modo interativo, basta:PrettyCompact.
Você pode alterar o formato na cláusula FORMAT da consulta ou especificando a opção de linha de comando --format.
Para usar o formato Vertical, você pode usar --vertical ou especificar \G ao final da consulta.
Nesse formato, cada valor é impresso em uma linha separada, o que é conveniente para tabelas com muitas colunas.
No modo interativo, por padrão, tudo o que for digitado é executado quando você pressiona Enter.
Não é necessário usar ponto e vírgula ao final da consulta.
Você pode iniciar o cliente com o parâmetro -m, --multiline.
Para inserir uma consulta de várias linhas, digite uma barra invertida \ antes da quebra de linha.
Depois de pressionar Enter, será solicitado que você digite a próxima linha da consulta.
Para executar a consulta, finalize-a com um ponto e vírgula e pressione Enter.
O ClickHouse Client é baseado em replxx (semelhante ao readline), portanto usa atalhos de teclado familiares e mantém um histórico.
O histórico é gravado em ~/.clickhouse-client-history por padrão.
Para sair do cliente, pressione Ctrl+D ou digite um dos seguintes comandos em vez de uma consulta:
exitouexit;quitouquit;q,Qou:qlogoutoulogout;
Como obter ajuda
Você pode consultar a documentação de qualquer função, engine de tabela, tipo de dado, formato, configuração e outro componente do sistema sem sair do cliente. Digitehelp seguido de um nome (as formas equivalentes /help, man e /man também funcionam):
system.documentation. A documentação correspondente é renderizada no terminal a partir de Markdown, com texto em negrito/itálico, tabelas e blocos de código com destaque de sintaxe. Quando um nome é usado por vários componentes (por exemplo, file, que é tanto uma função quanto uma engine de tabela), todos eles são exibidos.
Quando não há nenhuma correspondência exata, o cliente lista nomes semelhantes (levando em conta possíveis erros de digitação) e os componentes cuja documentação menciona a palavra:
help, é exibido um breve resumo de uso.
Comandos
O cliente executa alguns comandos iniciados por/ localmente, em vez de enviá-los ao servidor:
Digitar
/ no início da entrada lista os comandos como sugestões, e digitar mais caracteres do nome restringe a lista; Tab completa o comando em digitação, inclusive quando as sugestões estão desabilitadas. Um / enviado sozinho não é um comando: assim como no Oracle SQL*Plus, ele repete a última entrada. Um nome de comando digitado incorretamente é informado como tal, junto com os comandos que talvez tenham sido pretendidos, em vez de ser executado como uma consulta:
Informações sobre o processamento de consultas
Ao processar uma consulta, o cliente mostra:- Progress, que por padrão é atualizado no máximo 10 vezes por segundo. Em consultas rápidas, pode não haver tempo para que o progresso seja exibido.
- A consulta formatada após o parsing, para depuração.
- O resultado no formato especificado.
- O número de linhas no resultado, o tempo decorrido e a velocidade média de processamento da consulta. Todos os volumes de dados se referem a dados não comprimidos.
Ctrl+C.
No entanto, ainda será necessário aguardar um pouco até que o servidor interrompa a solicitação.
Não é possível cancelar uma consulta em determinadas etapas.
Se você não aguardar e pressionar Ctrl+C uma segunda vez, o cliente será encerrado.
O ClickHouse Client permite fornecer dados externos (tabelas temporárias externas) para consultas.
Para mais informações, consulte a seção Dados externos para processamento de consultas.
Aliases
Você pode usar os seguintes aliases dentro do REPL:\l-SHOW DATABASES\d-SHOW TABLES\d <TABLE>-DESCRIBE TABLE <TABLE>\c <DATABASE>-USE <DATABASE>.- repete a última consulta
\d que dá continuidade à consulta SHOW TABLES em vez de nomear uma tabela — como em \d FROM system ou \d LIKE 'hits%' — mantém a listagem. Uma tabela cujo nome coincida com uma dessas cláusulas precisa ser colocada entre crases: \d `format`.
Atalhos de teclado
Alt (Option) + Shift + e- abre o editor com a consulta atual. É possível especificar qual editor usar com a variável de ambienteEDITOR. Por padrão, é usado ovim.Alt (Option) + #- comenta a linha.Ctrl + r- pesquisa difusa no histórico.
Modo em lote
Usando o modo em lote
Em vez de usar o ClickHouse Client de forma interativa, você pode executá-lo em modo em lote. No modo em lote, o ClickHouse executa uma única consulta e é encerrado imediatamente — não há prompt interativo nem loop. Você pode especificar uma única consulta assim:--query:
stdin:
messages, você também pode inserir dados pela linha de comando:
--query é especificado, toda entrada é anexada à requisição após uma quebra de linha.
Inserindo um arquivo CSV em um serviço remoto do ClickHouse
Este exemplo insere um arquivo CSV com um conjunto de dados de exemplo,cell_towers.csv, em uma tabela existente, cell_towers, no banco de dados default:
Exemplos de inserção de dados pela linha de comando
Há várias maneiras de inserir dados pela linha de comando. O exemplo abaixo insere duas linhas de dados CSV em uma tabela do ClickHouse usando o modo em lote:cat <<_EOF inicia um heredoc que lê tudo até encontrar _EOF novamente e então exibe o conteúdo:
cat e redirecionado para clickhouse-client como entrada:
TabSeparated.
Você pode definir o formato na cláusula FORMAT da consulta, conforme mostrado no exemplo acima.
Consultas com parâmetros
Você pode especificar parâmetros em uma consulta e passar valores para ela com opções de linha de comando. Isso evita formatar a consulta com valores dinâmicos específicos no cliente. Por exemplo:Sintaxe da consulta
Na consulta, coloque entre chaves os valores que você quer preencher usando parâmetros de linha de comando, no seguinte formato:Exemplos
Geração de SQL com IA
O ClickHouse Client inclui assistência de IA integrada para gerar consultas SQL a partir de descrições em linguagem natural. Esse recurso ajuda os usuários a escrever consultas complexas sem precisar de conhecimento aprofundado de SQL. A assistência de IA funciona imediatamente se você tiver definida a variável de ambienteOPENAI_API_KEY ou ANTHROPIC_API_KEY. Para configurações mais avançadas, consulte a seção Configuração.
Uso
Para usar a geração de SQL com IA, adicione o prefixo?? à sua consulta em linguagem natural:
- Explorar automaticamente o esquema do seu banco de dados
- Gerar SQL adequado com base nas tabelas e colunas encontradas
- Executar a consulta gerada imediatamente
Exemplo
Configuração
A geração de SQL com IA exige que um provedor de IA seja configurado no arquivo de configuração do ClickHouse Client. Você pode usar OpenAI, Anthropic ou qualquer serviço de API compatível com OpenAI.Fallback baseado em variáveis de ambiente
Se nenhuma configuração de IA for especificada no arquivo de configuração, o ClickHouse Client tentará usar automaticamente as variáveis de ambiente:- Primeiro, verifica a variável de ambiente
OPENAI_API_KEY - Se não a encontrar, verifica a variável de ambiente
ANTHROPIC_API_KEY - Se não encontrar nenhuma das duas, os recursos de IA serão desativados
Arquivo de configuração
Para ter mais controle sobre as configurações de IA, configure-as no arquivo de configuração do ClickHouse Client localizado em:$XDG_CONFIG_HOME/clickhouse/config.xml(ou~/.config/clickhouse/config.xmlseXDG_CONFIG_HOMEnão estiver definido) (formato XML)$XDG_CONFIG_HOME/clickhouse/config.yaml(ou~/.config/clickhouse/config.yamlseXDG_CONFIG_HOMEnão estiver definido) (formato YAML)~/.clickhouse-client/config.xml(formato XML, local legado)~/.clickhouse-client/config.yaml(formato YAML, local legado)- Ou especifique um local personalizado com
--config-file
- XML
- YAML
Usando APIs compatíveis com OpenAI (por exemplo, OpenRouter):
Parâmetros
Parâmetros obrigatórios
Parâmetros obrigatórios
api_key- Sua chave de API para o serviço de IA. Pode ser omitida se estiver definida em uma variável de ambiente:- OpenAI:
OPENAI_API_KEY - Anthropic:
ANTHROPIC_API_KEY - Observação: a chave de API no arquivo de configuração tem prioridade sobre a variável de ambiente
- OpenAI:
provider- O provedor de IA:openaiouanthropic- Se omitido, usa fallback automático com base nas variáveis de ambiente disponíveis
Configuração do modelo
Configuração do modelo
model- O modelo a ser usado (padrão: específico do provedor)- OpenAI:
gpt-4o,gpt-4,gpt-3.5-turbo, etc. - Anthropic:
claude-3-5-sonnet-20241022,claude-3-opus-20240229, etc. - OpenRouter: use a nomenclatura de modelo deles, como
anthropic/claude-3.5-sonnet
- OpenAI:
Configurações de conexão
Configurações de conexão
base_url- Endpoint de API personalizado para serviços compatíveis com OpenAI (opcional)timeout_seconds- Tempo limite da solicitação, em segundos (padrão:30)
Exploração de esquema
Exploração de esquema
enable_schema_access- Permite que a IA explore os esquemas do banco de dados (padrão:true)max_steps- Número máximo de passos de chamada de ferramenta para explorar esquemas (padrão:10)
Parâmetros de geração
Parâmetros de geração
temperature- Controla o nível de aleatoriedade: 0.0 = determinístico, 1.0 = criativo. Por padrão, é omitido e enviado ao modelo apenas quando definido explicitamente, porque alguns modelos rejeitam esse parâmetro.max_tokens- Comprimento máximo da resposta em tokens (padrão:1000)system_prompt- Instruções personalizadas para a IA (opcional)
Como funciona
O gerador de SQL com IA usa um processo em várias etapas:- Descoberta do esquema
- Lista os bancos de dados disponíveis
- Descobre as tabelas nos bancos de dados relevantes
- Examina a estrutura das tabelas por meio de instruções
CREATE TABLE
- Geração de consultas
- Corresponde à sua intenção em linguagem natural
- Usa os nomes corretos de tabelas e colunas
- Aplica junções e agregações apropriadas
- Execução
Limitações
- Requer uma conexão ativa com a internet
- O uso da API está sujeito a limites de taxa e custos do provedor de IA
- Consultas complexas podem exigir vários refinamentos
- A IA tem acesso somente leitura às informações de esquema, não aos dados reais
Segurança
- As chaves de API nunca são enviadas aos servidores do ClickHouse
- A IA vê apenas informações do esquema (nomes de tabelas/colunas e tipos), não os dados reais
- Todas as consultas geradas respeitam as permissões existentes do seu banco de dados
String de conexão
Uso
Como alternativa, o ClickHouse Client oferece suporte à conexão com um servidor ClickHouse usando uma string de conexão semelhante à do MongoDB, PostgreSQL e MySQL. A sintaxe é a seguinte:Observações
Se o nome de usuário, a senha ou o banco de dados tiverem sido especificados na string de conexão, eles não poderão ser especificados usando--user, --password ou --database (e vice-versa).
O componente de host pode ser um hostname ou um endereço IPv4 ou IPv6.
Endereços IPv6 devem estar entre []:
clickhouse-client.
A string de conexão pode ser combinada com um número arbitrário de outras opções de linha de comando, exceto --host e --port.
As seguintes chaves são permitidas para query_parameters:
Codificação percentual
Caracteres fora do conjunto ASCII dos EUA, espaços e caracteres especiais nos parâmetros a seguir devem ser codificados em percentual:
userpasswordhostsdatabasequery parameters
Exemplos
Conecte-se aolocalhost na porta 9000 e execute a consulta SELECT 1.
localhost como o usuário john, com a senha secret, o host 127.0.0.1 e a porta 9000
localhost como o usuário default, no host com endereço IPv6 [::1] e porta 9000.
localhost pela porta 9000 no modo multilinha.
localhost pela porta 9000 com o usuário default.
localhost pela porta 9000 e use o banco de dados my_database como padrão.
localhost na porta 9000, use por padrão o banco de dados my_database especificado na string de conexão e estabeleça uma conexão segura com o parâmetro abreviado s.
my_user e sem senha.
localhost usando o email como nome de usuário. O símbolo @ é codificado em formato percentual como %40.
192.168.1.15, 192.168.1.25.
Formato do ID da consulta
No modo interativo, o ClickHouse Client mostra o ID de cada consulta. Por padrão, o ID é formatado assim:query_id_formats. O placeholder {query_id} na string de formato é substituído pelo ID da consulta. São permitidas várias strings de formato dentro da tag.
Esse recurso pode ser usado para gerar URLs e facilitar a análise de desempenho de consultas.
Exemplo
Arquivos de configuração
O ClickHouse Client usa o primeiro arquivo existente entre os seguintes:- Um arquivo definido pelo parâmetro
-c [ -C, --config, --config-file ]. ./clickhouse-client.[xml|yaml|yml]$XDG_CONFIG_HOME/clickhouse/config.[xml|yaml|yml](ou~/.config/clickhouse/config.[xml|yaml|yml]seXDG_CONFIG_HOMEnão estiver definido)~/.clickhouse-client/config.[xml|yaml|yml]/etc/clickhouse-client/config.[xml|yaml|yml]
clickhouse-client.xml
- XML
- YAML
Opções de variáveis de ambiente
O nome de usuário, a senha e o host podem ser definidos por meio das variáveis de ambienteCLICKHOUSE_USER, CLICKHOUSE_PASSWORD e CLICKHOUSE_HOST.
Os argumentos de linha de comando --user, --password ou --host, ou uma string de conexão (se especificada), têm prioridade sobre as variáveis de ambiente.
Opções de linha de comando
Todas as opções de linha de comando podem ser especificadas diretamente na linha de comando ou definidas como padrão no arquivo de configuração.Opções gerais
Opções de conexão
Em vez das opções
--host, --port, --user e --password, o cliente também oferece suporte a strings de conexão.