Skip to main content
Muitas vezes, precisamos lidar com dados em formatos de texto personalizados. Isso pode incluir um formato fora do padrão, JSON inválido ou um CSV corrompido. Usar parsers padrão, como CSV ou JSON, não funciona em todos esses casos. Mas o ClickHouse resolve isso com os poderosos formatos template e Regex.

Importação baseada em um Template

Suponha que queiramos importar dados do seguinte arquivo de log:
Podemos usar o formato Template para importar esses dados. Precisamos definir uma string de template com marcadores de valor para cada linha dos dados de entrada:
Vamos criar uma tabela para importar os dados:
Para importar dados usando um determinado template, precisamos salvar nossa string de template em um arquivo (row.template, no nosso caso):
Definimos o nome de uma coluna e a regra de escape no formato ${name:escaping}. Há várias opções disponíveis aqui, como CSV, JSON, Escaped ou Quoted, que implementam as regras de escape correspondentes. Agora podemos usar o arquivo fornecido como argumento para a opção de configuração format_template_row ao importar dados (observe que os arquivos de template e de dados não devem ter um símbolo \n extra no fim do arquivo):
E podemos garantir que nossos dados foram carregados na tabela:

Ignorar espaços em branco

Considere usar TemplateIgnoreSpaces, que permite ignorar espaços em branco entre delimitadores no Template:

Exportando dados usando templates

Também podemos exportar dados para qualquer formato de texto usando templates. Nesse caso, temos que criar dois arquivos: Template do conjunto de resultados, que define o layout de todo o conjunto de resultados:
Aqui, rows_read e time são métricas do sistema disponíveis para cada requisição. Já data representa as linhas geradas (${data} deve sempre aparecer como o primeiro placeholder neste arquivo), com base em um arquivo de template de linha:
Agora, vamos usar esses templates para exportar a seguinte consulta:

Exportando para arquivos HTML

Os resultados baseados em Template também podem ser exportados para arquivos usando a cláusula INTO OUTFILE. Vamos gerar arquivos HTML com base nos formatos resultset e row fornecidos:

Exportando para XML

O formato Template pode ser usado para gerar arquivos de texto de todos os tipos imagináveis, incluindo XML. Basta fornecer um template adequado e fazer a exportação. Considere também usar o formato XML para obter resultados XML padrão, incluindo metadados:

Importando dados com base em expressões regulares

O formato Regexp atende a casos mais sofisticados em que os dados de entrada precisam ser processados de forma mais complexa. Vamos processar nosso arquivo de exemplo error.log, mas, desta vez, capturar o nome do arquivo e o protocolo para salvá-los em colunas separadas. Primeiro, vamos preparar uma nova tabela para isso:
Agora podemos importar dados com base em uma expressão regular:
O ClickHouse inserirá os dados de cada grupo de captura na coluna correspondente, com base na sua ordem. Vamos verificar os dados:
Por padrão, o ClickHouse gerará um erro em caso de linhas sem correspondência. Se, em vez disso, você quiser ignorar as linhas sem correspondência, habilite a opção format_regexp_skip_unmatched:

Outros formatos

O ClickHouse oferece suporte a muitos formatos, tanto de texto quanto binários, para atender a diversos cenários e plataformas. Explore mais formatos e maneiras de trabalhar com eles nos artigos a seguir: Confira também o clickhouse-local - uma ferramenta portátil e completa para trabalhar com arquivos locais/remotos sem precisar de um servidor ClickHouse.
Última modificação em 3 de julho de 2026