Pular para o conteúdo principal

Função de tabela file

Um motor de tabela que fornece uma interface semelhante a uma tabela para fazer SELECT em arquivos e INSERT neles, semelhante à função de tabela s3. Use file ao trabalhar com arquivos locais e s3 ao trabalhar com buckets em armazenamento de objetos, como S3, GCS ou MinIO. A função file pode ser usada em consultas SELECT e INSERT para ler arquivos ou gravar neles.

Sintaxe

Para consultas SELECT, path também pode ser uma expressão que retorna um Array(String):

Argumentos

Quando o argumento structure é omitido, o ClickHouse infere o esquema a partir do próprio formato. Formatos diferentes geram nomes e tipos de coluna padrão diferentes. Para ver o esquema de um formato específico, use DESC com a função de tabela format.Por exemplo:

Valor retornado

Uma tabela para leitura ou gravação de dados em um arquivo.

Exemplos de gravação em um arquivo

Gravar em um arquivo TSV

Como resultado, os dados são gravados no arquivo test.tsv:

Gravação particionada em vários arquivos TSV

Se você especificar uma expressão PARTITION BY ao inserir dados em uma função de tabela do tipo file, será criado um arquivo separado para cada partição. Dividir os dados em arquivos separados ajuda a melhorar o desempenho das operações de leitura.
Como resultado, os dados são gravados em três arquivos: test_1.tsv, test_2.tsv e test_3.tsv.

Exemplos de leitura a partir de um arquivo

SELECT a partir de um arquivo CSV

Primeiro, defina user_files_path na configuração do servidor e prepare um arquivo test.csv:
Em seguida, carregue os dados de test.csv para uma tabela e selecione as duas primeiras linhas:

Inserindo dados de um arquivo em uma tabela

Lendo dados de table.csv, contido em archive1.zip e/ou archive2.zip:

Globs no path

Paths podem usar globs. Os arquivos devem corresponder ao pattern do path completo, não apenas ao sufixo ou ao prefixo. Há uma exceção: se o path se referir a um diretório existente e não usar globs, um * será adicionado implicitamente ao path para que todos os arquivos do diretório sejam selecionados.
  • * — Representa uma quantidade arbitrária de caracteres, exceto /, incluindo a string vazia.
  • ? — Representa um único caractere arbitrário.
  • {some_string,another_string,yet_another_one} — Substitui qualquer uma das strings 'some_string', 'another_string', 'yet_another_one'. As strings podem conter o símbolo /.
  • {N..M} — Representa qualquer número >= N e <= M.
  • ** - Representa todos os arquivos dentro de uma pasta, recursivamente.
Construções com {} são semelhantes às funções de tabela remote e hdfs.

Exemplos

Exemplo Suponha que existam estes arquivos com os seguintes caminhos relativos:
  • some_dir/some_file_1
  • some_dir/some_file_2
  • some_dir/some_file_3
  • another_dir/some_file_1
  • another_dir/some_file_2
  • another_dir/some_file_3
Execute uma consulta para obter o número total de linhas em todos os arquivos:
Uma expressão de caminho alternativa que produz o mesmo resultado:
Consulte o número total de linhas em some_dir usando o curinga * implícito:
Se sua lista de arquivos contiver intervalos numéricos com zeros à esquerda, use a construção com chaves para cada dígito separadamente ou use ?.
Exemplo Consulte o número total de linhas nos arquivos chamados file000, file001, … , file999:
Exemplo Consulte o número total de linhas de todos os arquivos no diretório big_dir/, de forma recursiva:
Exemplo Consulte o número total de linhas de todos os arquivos file002 em qualquer pasta do diretório big_dir/, recursivamente:

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 do arquivo for desconhecido, o valor será NULL.
  • _time — Data e hora da última modificação do arquivo. Tipo: Nullable(DateTime). Se a data e hora forem desconhecidas, o valor será NULL.

configuração use_hive_partitioning

Quando a configuração use_hive_partitioning é definida como 1, o ClickHouse detecta o particionamento no estilo Hive no caminho (/name=value/) e permite usar colunas de partição como colunas virtuais na consulta. Essas colunas virtuais terão os mesmos nomes definidos no caminho particionado. Exemplo Use a coluna virtual criada com o particionamento no estilo Hive

Configurações

Última modificação em 2 de julho de 2026