Pular para o conteúdo principal
O motor de tabela File mantém os dados em um arquivo em um dos formatos de arquivo suportados (TabSeparated, Native, etc.). Cenários de uso:
  • Exportação de dados do ClickHouse para arquivo.
  • Conversão de dados de um formato para outro.
  • Atualização de dados no ClickHouse por meio da edição de um arquivo no disco.
No momento, este motor não está disponível no ClickHouse Cloud. Em vez disso, use a função de tabela S3.

Uso no Servidor ClickHouse

O parâmetro Format especifica um dos formatos de arquivo disponíveis. Para executar consultas SELECT, o formato deve ter suporte para entrada e, para executar consultas INSERT – para saída. Os formatos disponíveis estão listados na seção Formatos. O ClickHouse não permite especificar um caminho no sistema de arquivos para File. Ele usará a pasta definida pela configuração path na configuração do servidor. Ao criar uma tabela usando File(Format), ele cria um subdiretório vazio nessa pasta. Quando os dados são gravados nessa tabela, eles são colocados no arquivo data.Format dentro desse subdiretório. Você pode criar manualmente esse subdiretório e arquivo no sistema de arquivos do servidor e então usar ATTACH para associá-lo às informações da tabela com o nome correspondente, para que seja possível consultar os dados desse arquivo.
Tenha cuidado com essa funcionalidade, porque o ClickHouse não acompanha alterações externas nesses arquivos. O resultado de gravações simultâneas via ClickHouse e fora do ClickHouse é indefinido.

Exemplo

1. Configure a tabela file_engine_table:
Por padrão, o ClickHouse criará a pasta /var/lib/clickhouse/data/default/file_engine_table. 2. Crie manualmente o arquivo /var/lib/clickhouse/data/default/file_engine_table/data.TabSeparated com o seguinte conteúdo:
3. Consulte os dados:

Uso no ClickHouse-local

No clickhouse-local, o motor File aceita o caminho do arquivo além de Format. Os fluxos padrão de entrada/saída podem ser especificados usando nomes numéricos ou legíveis por pessoas, como 0 ou stdin, 1 ou stdout. É possível ler e gravar arquivos comprimidos com base em um parâmetro adicional do motor ou na extensão do arquivo (gz, br ou xz). Exemplo:

Detalhes da implementação

  • Várias consultas SELECT podem ser executadas concorrentemente, mas as consultas INSERT aguardam umas às outras.
  • Há suporte para criar um novo arquivo por meio de uma consulta INSERT.
  • Se o arquivo existir, INSERT acrescentará novos valores ao arquivo.
  • Não há suporte para:
    • ALTER
    • SELECT ... SAMPLE
    • Índices
    • Replicação

PARTITION BY

PARTITION BY — Opcional. É possível criar arquivos separados particionando os dados com base em uma chave de partição. Na maioria dos casos, você não precisa de uma chave de partição e, mesmo quando ela é necessária, em geral não precisa ser mais granular do que por mês. O particionamento não acelera as consultas (ao contrário da expressão ORDER BY). Você nunca deve usar um particionamento granular demais. Não particione seus dados por identificadores ou nomes de clientes (em vez disso, use o identificador ou nome do cliente como a primeira coluna na expressão ORDER BY). Para particionar por mês, use a expressão toYYYYMM(date_column), em que date_column é uma coluna com uma data do tipo Date. Os nomes das partições aqui seguem o formato "YYYYMM".

Colunas virtuais

  • _path — Caminho do arquivo. Tipo: LowCardinality(String).
  • _file — Nome do arquivo. Tipo: LowCardinality(String).
  • _size — Tamanho do arquivo em bytes. Tipo: Nullable(UInt64). Se o tamanho for desconhecido, o valor é NULL.
  • _time — Horário da última modificação do arquivo. Tipo: Nullable(DateTime). Se o horário for desconhecido, o valor é NULL.

Configurações

Última modificação em 10 de junho de 2026