Sintaxe
Argumentos
db_path— Caminho para um arquivo de banco de dados SQLite. String.table_name— Nome de uma tabela no banco de dados SQLite ou uma consulta passada ao SQLite como está (consulte Passando uma consulta em vez de um nome de tabela). String.
Valor retornado
- Um objeto de tabela com as mesmas colunas da tabela
SQLiteoriginal.
Passando uma consulta em vez de um nome de tabela
Em vez de um nome de tabela, o segundo argumento pode ser uma consultaSELECT passada ao SQLite como está. A estrutura da tabela resultante é inferida a partir do resultado da consulta. A consulta pode ser escrita como uma subconsulta ou encapsulada na função query:
INSERT nela. A mesma sintaxe também é aceita pelo motor de tabela SQLite.
A forma de subconsulta
(SELECT ...) é analisada pelo ClickHouse e reserializada antes de ser enviada ao SQLite. Portanto, ela deve ser um SQL válido do ClickHouse. Para usar uma sintaxe específica do SQLite que o ClickHouse não analisa, use a forma query('...'), cujo texto é enviado ao SQLite literalmente.Qualquer WHERE, LIMIT, agregação etc. externo da consulta ClickHouse circundante não é aplicado à consulta fornecida — ele é aplicado no ClickHouse depois que o resultado completo da consulta é buscado. Para restringir os dados lidos do SQLite, coloque o filtro dentro da consulta fornecida. Com external_table_strict_query = 1, um filtro externo nas colunas da função de tabela é rejeitado com uma exceção, em vez de ser aplicado localmente, pois não pode ser aplicado à consulta fornecida. A verificação abrange o predicado WHERE de nível superior e cada conjunção de um AND de nível superior. Um PREWHERE nas colunas desta tabela não é um caso para essa configuração: este motor de tabela não oferece suporte a PREWHERE, e essa consulta é rejeitada com ILLEGAL_PREWHERE independentemente da configuração. A verificação é executada apenas onde um filtro poderia ser aplicado: quando esta tabela é a única tabela da consulta, em qualquer lado de um INNER JOIN ou no lado preservado de uma junção externa (o lado esquerdo de um LEFT JOIN, o lado direito de um RIGHT JOIN). No lado não preservado de um LEFT/RIGHT JOIN e em qualquer lado de um FULL JOIN, nada é aplicado e nada é verificado; portanto, um filtro nas colunas desta tabela é aplicado localmente após a junção mesmo no modo estrito. Onde a verificação é executada, um predicado que referencia outras tabelas unidas na consulta circundante não é aplicado e é excluído da verificação, independentemente de referenciar apenas o lado unido ou de misturá-lo com esta tabela em uma expressão que não seja AND (por exemplo, um OR); tal predicado mantém seu ponto usual de avaliação no ClickHouse (WHERE após a junção, PREWHERE antes dela) e não é rejeitado.Exemplo
Query
Response
Relacionados
- SQLite motor de tabela
- Mecanismo de banco de dados SQLite — seção de suporte a tipos de dados