Vire um CSV com vários registros Consulta SQL em um API REST ponto final
Para salvar uma consulta no Construtor de Consultas, clique em Novo ponto final, and you have a URL at api.querystreams.com with its own key. The SQL runs read-only on the Agent that already reads your Multi-record CSV file; the caller gets JSON or CSV and never sees the SQL, the schema or a password. Nothing to host, no port to open. About 90 seconds from a saved query, and the Free plan covers your first endpoint.
O resultado final será o que você obterá.
Um URL em api.querystreams.com que retorna as linhas da sua consulta de múltiplos registros salva como JSON ou CSV para qualquer pessoa que possua a chave, testada no console do portal antes de ser compartilhada. Assim:
| Chave | Valor | Descrição |
|---|---|---|
campo_1 cordão Opcional | Seattle | Filtro chamável a partir da consulta salva |
Chave X-API | qsapi_AB•••••••••• | Seu token secreto |
{
"campo_1": "Seattle"
}| Cabeçalho | Valor | Descrição |
|---|---|---|
Chave X-API | qsapi_AB•••••••••• | Seu token secreto. Um por chamador, revogue a qualquer momento. |
Tipo de conteúdo | aplicativo/json | Os parâmetros são transmitidos como um corpo JSON. |
Aceitar | aplicativo/json | Retorna JSON; solicita texto/CSV e recebe CSV. |
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"field_1": "Seattle"}'{
"colunas": [ { "nome": "_arquivo_fonte", "tipo": "inteiro" }, { "nome": "_seq", "tipo": "corda" }, { "nome": "campo_1", "tipo": "corda" } ],
"fileiras": [
{ "_arquivo_fonte": 1042, "_seq": "Comerciantes do Vento Norte", "campo_1": "Seattle" },
{ "_arquivo_fonte": 1057, "_seq": "Alpine Outfitters", "campo_1": "Denver" },
{ "_arquivo_fonte": 1063, "_seq": "Alimentos do Porto", "campo_1": "Halifax" }
],
"meta": { "contagem_de_linhas": 3, "duração_do_agente_ms": 41, "id_da_solicitação": "req_7Hq2mKd9" }
}| Cabeçalho | Valor | Descrição |
|---|---|---|
tipo de conteúdo | application/json; charset=utf-8 | O envelope na aba Corpo |
comprimento do conteúdo | 412 | Bytes retornados; o indicador de tamanho acima |
O CSV com múltiplos registros armazena seus dados em arquivos em um computador que você controla. Alguém precisa de uma parte desses dados em seu aplicativo, painel ou script, e as soluções usuais geralmente envolvem muita coisa: um login de banco de dados que se torna obsoleto após o término do projeto, uma exportação noturna que já está desatualizada antes do café da manhã, ou um pequeno servidor de API que alguém precisa manter atualizado. O Query Streams transforma o endpoint em uma consulta salva e uma chave. O agente que já possui arquivos CSV com diversos tipos de registro executa a consulta, o api.querystreams.com verifica a chave e o limite de requisições, e o solicitante recebe as linhas. O SQL, o esquema e as credenciais nunca saem da sua conta.
O que você vai precisar
Uma conta do Query Streams
Todos os planos incluem a API REST. O plano gratuito oferece um endpoint, duas chaves e 250 linhas por chamada, o suficiente para criar este guia. Cadastre-se em my.querystreams.com.
The Agent with your Multi-record CSV file added as a connection
Ainda não terminou? Adicione em Dados → Agentes de Dados; leva cerca de dez minutos.
Uma consulta salva no Construtor de Consultas
O endpoint encapsula exatamente uma consulta salva. Escreva o SELECT, execute-o uma vez e salve-o. Adicione um filtro dinâmico (um @variable (na cláusula WHERE) se os chamadores devem poder filtrar.
Quem pode criar endpoints? Proprietários, administradores e criadores. Se o API O item está faltando na sua barra superior. Um administrador pode ativá-lo para o seu usuário em [inserir configurações aqui]. Conta → PermissõesQualquer pessoa com quem você compartilhe um endpoint precisa apenas de uma conta do Query Streams, em qualquer plano.
Configure em quatro etapas
-
Salvar consulta
Em Construtor de consultas Selecione sua conexão de múltiplos registros, escreva a instrução SELECT que deseja publicar e execute-a uma vez para visualizar as linhas. Limite-se às colunas necessárias para quem fez a chamada; o endpoint retorna exatamente o que a consulta retorna.
Consulta salva · fileset.data_hdrSELECIONAR _arquivo_fonte, _seq, campo_1, campo_2 DE conjunto de arquivos.data_hdr ORDEM POR _arquivo_fonte, _seq LIMITE 100
Se os usuários precisarem poder filtrar, adicione um Filtro Dinâmico, por exemplo.
ONDE campo_1 = @campo_1. Cada@variabletorna-se um parâmetro da API na etapa 3. Clique. Salvar e dê um nome à consulta; esse nome se tornará o nome de exibição do endpoint. -
Crie o endpoint
Aberto API na barra superior e clique Novo ponto finalO assistente tem quatro etapas. Selecione a consulta, Configurar, Parâmetros de bloqueio e Compartilhar. Sobre Selecione a consultaClique na consulta que você acabou de salvar; as consultas cujo agente está offline aparecem em cinza. Clique Próximo.
Atalho. A partir do Construtor de Consultas, você pode expor a consulta aberta diretamente; o assistente então inicia em Configurar com a consulta já selecionada.
-
Configurar e bloquear parâmetros
Sobre Configurar As configurações padrão estão corretas para um primeiro ponto de extremidade: Nome de exibição preenchido a partir da consulta, Vida útil Permanente (escolha) Expirando (para uma participação temporária), Modo de resposta Estático (uma resposta JSON; escolha Transmissão (para resultados que excedam o limite estático de linhas do seu plano), Formato interno JSON. O modo e o formato da resposta são fixos após a criação, portanto, defina-os aqui. Clique. Próximo.
Sobre Parâmetros de bloqueio Todos os filtros dinâmicos na consulta são listados. Deixe como estão aqueles que os chamadores podem definir. Invocável e dê a cada um um Nome da string de consulta; marcação Obrigatório Se uma chamada sem ele falhar, fixe um valor que o chamador não deve alterar. Trancadoou um cenário de encontro como Início do mês. Escondido Mantém o valor padrão da consulta e rejeita qualquer tentativa de alterá-lo. Clique. Próximo.
-
Compartilhe e ganhe sua chave.
Sobre Compartilhar você pode convidar Pessoas por e-mail ou adicione um Chave de serviço Para um servidor ou uma ferramenta de automação, ou ignore ambos por enquanto. Clique. Criar e obter minha chaveA tela de sucesso exibe o URL do endpoint e sua chave: uma string de 49 caracteres começando com
qsapi_Copie-o. Você poderá exibi-lo novamente mais tarde a partir do ponto de extremidade. Compartilhamento aba, para que não se perca se você fechar a tela.Clique em Enviar no console para fazer a primeira chamada a partir do próprio portal. O painel de resposta mostra Status, Tempo e Tamanho, o Corpo A aba exibe o JSON e a chamada aparece no Atividade alguns segundos depois.
É isso. Os arquivos CSV que misturam vários tipos de registro agora respondem a uma URL, em modo somente leitura, com base nas chaves fornecidas. Nada foi instalado, nenhuma porta foi aberta e o SQL permaneceu em sua conta.
Ligue de qualquer lugar
Substitua o ID do endpoint pelo seu, que você encontra na barra de URL do console. qsapi_SUA_CHAVE com sua chave. Os parâmetros chamáveis vão na string de consulta do GET; aqui a consulta salva expõe campo_1:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?field_1=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
"colunas": [ { "nome": "_arquivo_fonte", "tipo": "inteiro" }, { "nome": "_seq", "tipo": "corda" }, { "nome": "campo_1", "tipo": "corda" } ],
"fileiras": [
{ "_arquivo_fonte": 1042, "_seq": "Comerciantes do Vento Norte", "campo_1": "Seattle" },
{ "_arquivo_fonte": 1057, "_seq": "Alpine Outfitters", "campo_1": "Denver" },
{ "_arquivo_fonte": 1063, "_seq": "Alimentos do Porto", "campo_1": "Halifax" }
],
"meta": { "contagem_de_linhas": 3, "duração_do_agente_ms": 41, "id_da_solicitação": "req_7Hq2mKd9" }
}As linhas retornam como objetos indexados pelo nome da coluna, com a lista de colunas e um meta Bloco que informa quantas linhas existem, se o resultado foi truncado e o ID da solicitação que você pode citar para suporte. A mesma chamada que um POST coloca os parâmetros em um corpo JSON, que é a escolha certa para longas listas de valores:
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"params": {"field_1": "Seattle"}}'?formato=csv- CSV em vez de JSON, com linha de cabeçalho incluída.
Aceitar: texto/csvfaz o mesmo. Os endpoints de streaming retornam NDJSON (um objeto JSON por linha) com um final{"_summary": true, "row_count": N}linha; verifique essa última linha. ?sample=true- No máximo cinco linhas, sem cobrança. Ideal para conectar os cabos de um cliente.
?compressão=lz4- Um corpo de estrutura LZ4 para chamadas de alto volume com decodificador; o Código A aba contém o trecho de código decodificador para cada idioma. A compressão gzip simples ocorre automaticamente quando seu cliente envia o arquivo.
Codificação aceita: gzip. Autorização: Portador qsapi_…- Aceito como um pseudônimo para
Chave X-APIUse-o a partir do código do navegador.
Onde ele se conecta
Excel e Power BI
Exportar → Power Query M (.pq) Isso lhe fornece uma consulta pronta. Cole-a no Editor Avançado (Excel: Dados → Obter Dados → De Outras Fontes → Consulta em Branco; Power BI: Página Inicial → Transformar dados → Nova Fonte → Consulta em Branco) e substitua o espaço reservado pela sua consulta. qsapi_ chave.
Carteiro, Insônia, Amarelinha
O mesmo Exportar O menu baixa uma coleção do Postman v2.1, uma exportação do Insomnia v5 ou uma coleção do Hoppscotch com os parâmetros preenchidos e um espaço reservado para a chave.
Seu próprio código
O Código A aba contém exemplos funcionais para cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell e Ruby. Exportar → Especificação OpenAPI 3.1 Alimenta qualquer gerador de cliente ou interface de usuário Swagger.
n8n, Zapier, Make, cron
Criar um Chave de serviço Para a ferramenta, cole o URL e a chave no nó HTTP correspondente e agende a execução. Cada ferramenta recebe sua própria chave, então você pode revogar uma sem afetar as outras.
O que os planos permitem
| Plano | Pontos finais | Chaves por endpoint | Pessoas por ponto final | Linhas por chamada (estático) | Linhas por chamada (streaming) | Chamadas por minuto, por tecla |
|---|---|---|---|---|---|---|
| Gratuito | 1 | 2 | 1 | 250 | 250 | 3 |
| Núcleo Pessoal | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| Personal Plus | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| Núcleo de negócios | 5 | 10 | 10 | 50,000 | 1,000,000 | 300 |
| Negócios Plus | 10 | 20 | 25 | 100,000 | 5,000,000 | 600 |
| Business Max | 25 | 30 | 50 | 250,000 | 10,000,000 | 600 |
| Núcleo Empresarial | 50 | 50 | 100 | 500,000 | 25,000,000 | 1,000 |
| Enterprise Plus | 100 | 100 | 250 | 1,000,000 | 50,000,000 | 1,000 |
| Empresa Max | 250 | 200 | 500 | 2,500,000 | 100,000,000 | 1,500 |
Cada chamada também possui um tempo limite fixo de consulta de 60 segundos e um limite de resposta de 8 MiB, e os bytes retornados são contabilizados na sua franquia de dados mensal, a mesma franquia usada pelos suplementos do Excel e do Google Sheets. O plano gratuito inclui um endpoint e 5 MB por mês, o que é suficiente para uma pequena tabela acessada várias vezes ao dia. Consulte a página de preços. para as verbas previstas no plano.
Gratuito é um plano que você mantém. Não se trata de um período de teste. Veja exatamente o que está incluído no anúncio. página de preços.
Mantendo-o seguro
O SQL continua sendo seu.
Quem faz a chamada recebe as linhas. Nunca vê a consulta, os nomes das tabelas ou os detalhes da conexão, e não pode alterar o que o endpoint executa.
Uma chave, um ponto final, um chamador
Uma chave funciona para apenas um ponto de extremidade. Atribua uma chave a cada pessoa ou ferramenta, e todas as chamadas serão registradas para ela. Revogue uma chave e as outras continuarão funcionando; a revogação entra em vigor em cerca de cinco minutos.
Somente leitura, do seu lado da parede.
O agente executa apenas o comando SELECT salvo, e nada mais, dentro da sua rede, através de sua própria conexão de saída. Não há necessidade de abrir nenhuma porta nem de fornecer credenciais na internet.
Cada chamada no livro-razão
O Atividade A aba mostra cada chamada com hora, destinatário, status, linhas, bytes e duração, incluindo as recusadas. Defina um Expirando duração do compartilhamento temporário e o ponto de extremidade se desliga automaticamente na data definida.
Quando algo não funciona
| Status | Código | O que fazer |
|---|---|---|
| 401 | API_KEY_REQUIRED / API_KEY_INVALID | O cabeçalho está faltando ou a chave está incorreta. Enviar X-API-Key: qsapi_…, todos os 49 caracteres. As chaves podem ser copiadas novamente na guia Compartilhamento do endpoint. |
| 403 | API_KEY_ENDPOINT_MISMATCH | Uma chave válida usada em um endpoint diferente. Cada chave pertence a um endpoint. |
| 403 | API_KEY_REVOGADA / API_ENDPOINT_EXPIRED | A chave foi revogada ou o endpoint expirou. Gere uma nova chave ou restaure o endpoint. |
| 400 | API_PARAM_NOT_OVERRIDABLE | Você enviou um parâmetro que o proprietário não marcou como Callable. O corpo da mensagem lista os nomes permitidos. |
| 414 | API_QUERY_TOO_LARGE | A string de consulta GET passou 8 KB ou 200 valores de lista. Envie os mesmos parâmetros como corpo JSON em uma requisição POST. |
| 413 | API_OUTPUT_TOO_LARGE | O resultado ultrapassou o limite de 8 MiB. Refine a consulta ou altere o endpoint para Streaming. |
| 429 | API_RATE_LIMITED | Muitas chamadas neste minuto para a chave ou o ponto de extremidade. Aguarde. Tentar novamente após segundos, ou aumentar Limite de taxa Em Configurações da API → Padrões, dentro do seu plano. |
| 429 | API_DATA_REALM_EXHAUSTED | O pacote de dados mensal do proprietário foi atingido. Ele será renovado no próximo mês de faturamento; faça um upgrade para obter mais dados. |
| 503 | API_AGENT_NOT_CONNECTED | O agente responsável pelo seu arquivo CSV com vários registros está offline. Verifique-o em Dados → Agentes de Dados; as chamadas serão retomadas assim que a conexão for restabelecida. |
| 504 | API_QUERY_TIMEOUT | A consulta demorou mais de 60 segundos. Adicione um filtro ou um índice, ou salve uma consulta mais específica. |
Cada corpo de erro tem a forma {"erro": {"código": "…", "mensagem": "…"}} e cada resposta carrega um X-QS-Request-Id Ao entrar em contato com o suporte, mencione o ID no cabeçalho.
Perguntas que as pessoas fazem
Meus dados são copiados para o Query Streams?
Não. O agente executa a consulta no local onde seus dados estão armazenados e envia apenas as linhas solicitadas pela chamada. Nada é sincronizado ou armazenado em cache nesse meio tempo; cada chamada executa a consulta.
Quem faz a chamada pode alterar o SQL ou solicitar outras tabelas?
Não. Um endpoint executa uma consulta salva. Os chamadores só podem definir os parâmetros que você marcou. Invocávele os valores são vinculados com segurança: o texto é colocado entre aspas e escapado, os números têm seus intervalos verificados e as listas são expandidas.
Como faço para entregar isso a um parceiro?
No ponto final Compartilhamento guia escolher Pessoas e insira o e-mail deles. Eles recebem um link mágico, fazem login com esse endereço (uma conta gratuita funciona) e geram sua própria chave; você vê as chamadas deles por nome na aba Atividade. Para um servidor ou uma ferramenta de automação, crie um Chave de API com um rótulo em vez disso.
O que acontece quando eu edito a consulta salva?
O endpoint executa o novo SQL na próxima chamada e sua especificação OpenAPI é regenerada. A URL e as chaves não mudam. Se você adicionar ou remover um filtro, revise as configurações. Parâmetros de bloqueio para que os chamadores vejam os parâmetros corretos.
O plano gratuito realmente cobre isso?
Sim. O plano gratuito é permanente, não um período de teste com prazo de validade. Ele inclui um endpoint, duas chaves e 250 linhas por chamada. Veja exatamente o que está incluído no [link para a página de detalhes]. página de preços.
O endpoint utiliza o dialeto SQL de múltiplos registros?
Sim, porque o SQL é seu. Você o escreveu e o executou em arquivos CSV que misturam vários tipos de registro no Construtor de Consultas; o endpoint executa essa mesma instrução pela mesma conexão, com os valores dos seus parâmetros vinculados da maneira que o recurso de múltiplos registros espera.
Os arquivos CSV que misturam vários tipos de registros precisam estar acessíveis pela internet?
Não. Somente o Agente precisa acessá-lo, de dentro da sua rede. O Agente faz uma única conexão de saída com o Query Streams; os chamadores se comunicam com api.querystreams.com e nunca com o seu computador.
Guias relacionados
Todos os guias para Multi-record
Não é bem a sua configuração?
- Todas as linhas dos seus arquivos têm as mesmas colunas, incluindo uma linha de cabeçalho? A opção Pasta CSV mescla todas elas em uma única tabela → CSV Folder
- Precisa apenas de uma lista de arquivos com tamanhos, datas e alterações? O Sistema de Arquivos faz isso sem ler os arquivos → File System
- Deseja obter os registros das próprias máquinas, como alarmes e ciclos? O recurso "Registros da Máquina" lê as pastas de registro do controlador → Machine Logs
Setup trouble?
- Agent says the file or folder does not exist, or access is denied? Mapped drives, network shares, OneDrive and Linux home folders each need one fix → Where the Agent can read files from
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

