Pular para o conteúdo principal
O vsql_duckdb executa o DuckDB dentro do processo do servidor, então uma instrução SQL pode ler arquivos Parquet, CSV e JSON diretamente do armazenamento de objetos ou do disco. Os arquivos analíticos ficam onde estão, e você os consulta ao lado das suas tabelas sem uma etapa de exportação nem um segundo mecanismo para operar.
Esta extensão declara três capabilities Preview, então o servidor precisa ser iniciado com --vsql_allow_preview_extensions=ON. Ela também precisa de um servidor VillageSQL mais recente que o 0.0.6.

Instalar

O vsql_duckdb não vem incluído com o servidor, então compile-o primeiro a partir do repositório e copie o vsql_duckdb.veb resultante para o diretório indicado pela variável de sistema veb_dir. Em seguida, instale-o:
Confirme que ele está lá:
As instruções de compilação estão no repositório.

O que ela adiciona

SHOW STATUS LIKE 'vsql_duckdb%' informa dois contadores, que persistem durante a vida do processo do servidor:
queries_total conta uma chamada de duckdb_query() ou duckdb_scalar() que foi executada, tenha ela tido sucesso ou gerado um erro — uma chamada de duckdb_scalar() que retorna NULL, por um resultado vazio ou por um valor NULL, conta como sucesso. Uma chamada cujo argumento sql é ele mesmo NULL retorna NULL sem incrementar nenhum dos contadores. queries_failed conta somente as chamadas que geraram um erro, e está incluído em queries_total.

Exemplo

Pergunte a ele o que ele é:
Execute uma consulta que não toca em nenhum arquivo:
Leia um CSV e receba as linhas de volta como JSON. A leitura do disco do próprio servidor vem desativada por padrão, então ative-a primeiro:
Desative-a novamente quando terminar, porque ela permanece ativada até que você o faça:
Como o resultado é JSON, o JSON_TABLE o transforma de volta em linhas que você pode juntar com as suas próprias tabelas.
O allow_local_files abre todo arquivo que a conta do servidor pode ler, e o enable_external_access vem ativado por padrão, então uma consulta também pode acessar a rede. As funções de extensão não podem receber permissões via GRANT como as funções armazenadas, então qualquer pessoa que possa executar SQL aqui pode chamá-las: instalar a extensão dá a todas as contas o alcance dos dois interruptores. O segredo do armazenamento de objetos fica no keyring, e o vsql_duckdb.s3_secret_keyring_id apenas o nomeia.
Uma configuração gravada com SET PERSIST sobrevive a uma reinicialização, mas UNINSTALL EXTENSION a apaga. Após desinstalar e reinstalar, toda configuração volta ao seu padrão, e nenhuma reinicialização traz o valor antigo de volta.

Veja também