# Leitura de arquivo CSV

## Introdução

Neste tutorial vamos criar um fluxo **exemplo** simples iniciado com o conector Manual trigger para execução manual do fluxo para leitura/conversão de um arquivo CSV em objetos JavaScript.

<figure><img src="/files/iGLr9qkEcnJm8eZCFxmp" alt=""><figcaption><p>Fluxo completo utilizado</p></figcaption></figure>

## Componentes relacionados <a href="#ow1fz8o1w5mn" id="ow1fz8o1w5mn"></a>

1. [Manual trigger](/guia/conectores/categorias/triggers/manual-trigger.md)
2. [File Reader](/guia/conectores/categorias/manipulacao-de-arquivos/file-reader.md)
3. [File Remove](/guia/conectores/categorias/manipulacao-de-arquivos/file-remove.md)
4. [CSV](/guia/conectores/categorias/manipulacao-de-dados/csv.md)
5. [Loop/ForEach](/guia/conectores/categorias/conectores-essenciais/loop-foreach.md)
6. [Debugger](/guia/conectores/categorias/monitoramento/debugger.md)

## Passo a passo <a href="#ow1fz8o1w5mn" id="ow1fz8o1w5mn"></a>

### 1. Iniciando o fluxo <a href="#eit6ywop8vw" id="eit6ywop8vw"></a>

Na biblioteca de componentes/conectores como dito antes foi escolhido o iniciador manual com a configuração de exibir formulário de entrada ligado, já que este é um fluxo para leitura de um documento, portanto receberá o mesmo.&#x20;

<div align="left" data-full-width="false"><figure><img src="/files/bAgf84kHIE9QSpykcT5E" alt="" width="375"><figcaption><p>Configurando input no formulário</p></figcaption></figure> <figure><img src="/files/POsbCpX5bhGl7DdUSrhb" alt="" width="305"><figcaption><p>Carregando um arquivo de exemplo</p></figcaption></figure></div>

Após carregarmos o arquivo, é possível observar alguns atributos relacionados ao upload como a pasta de destino, o atributo do formulário, um filename (renomeado intermente pelo Floui para garantir integridade dos dados), o atributo path que compila o destination + filename.

Podemos ainda observar o atributo size para controle do consumo do storage e o mimetype que define o tipo de arquivo a ser manipulado.

<div align="left"><figure><img src="/files/JnUHAX7aIzvoxmJtObcC" alt=""><figcaption><p>Estrutura de arquivos no Floui</p></figcaption></figure></div>

### 2. Procurando arquivo <a href="#id-9xa04wpzkseq" id="id-9xa04wpzkseq"></a>

Com o atributo **path** em mãos, podemos passar o caminho ao componente **File Reader** que irá mapear o arquivo salvo no Storage e encarregar de oferecer uma saída de dados ao arquivo em memória no formato de texto.

<div data-full-width="false"><figure><img src="/files/f059NcFjvexhCkaKmyH3" alt=""><figcaption><p>Configurando o File Reader</p></figcaption></figure> <figure><img src="/files/Gu3o6IIMyrRlQpeuYLIJ" alt=""><figcaption><p>Payload do componente File Reader</p></figcaption></figure></div>

### 3. Convertendo arquivo <a href="#v7uyyjyngug9" id="v7uyyjyngug9"></a>

Agora que já temos os dados do arquivo CSV importado na memória do storage, podemos passar esses dados para leitura no formato CSV. Para isso, algumas configurações serão necessárias como:

**Definir o tipo de dados**: CSV ou objeto JavaScript

Indicar onde os dados posem ser encontrados: no nosso caso, será o payload definido no componente **File Reader** (archive).

Definir o tipo de **delimitador dos dados** de acordo com a sua base.

O campo **Qualificador de texto** permite definir se haverá tratamento especial para textos que estejam entre aspas, definindo-o como único campo. Isso ajuda na correta interpretação e importação dos dados, mantendo a integridade das informações no arquivo CSV.

<div align="left" data-full-width="false"><figure><img src="/files/8eBkaKXWUD7K72JqTJvm" alt=""><figcaption><p>Configurando o conector CSV</p></figcaption></figure> <figure><img src="/files/7a5iYdlExa6JrcIFgVzF" alt=""><figcaption><p>Payload do componente CSV</p></figcaption></figure></div>

### 4. Removendo o arquivo usado <a href="#v7uyyjyngug9" id="v7uyyjyngug9"></a>

Chamamos a atenção agora para o componente **File Remove**. Imagine que seu fluxo seja uma automação que irá receber centenas de arquivos CSV para a leitura de pedidos. Após a leitura dos dados que serão armazenados em um banco externo, os arquivos permaneceriam em seu storage sem utilidade.&#x20;

Pensando em cenários similares, aplicamos o **File Remove**, que deleta o arquivo após a leitura.

### 5. Iterando objetos <a href="#z7p6tdhsi0uz" id="z7p6tdhsi0uz"></a>

Assim como em em linhas de códigos, o Floui conta com o componente de iterações chamado **Loop / ForEach** que tem como função interar arrays de objetos ou listas e retornar um a um.

<div><figure><img src="/files/yzteoGbFFNig5o6019y2" alt=""><figcaption><p>Componente Loop recebendo um array e retornando linha a linha</p></figcaption></figure> <figure><img src="/files/D4e0eTsEot2vq14R97Rp" alt=""><figcaption><p>Payload do componente Loop / ForEach</p></figcaption></figure></div>

## Conclusão <a href="#id-5o0i3b2jvgmy" id="id-5o0i3b2jvgmy"></a>

Este foi um exemplo de uso para conversão de arquivos CSV. Agora, você decide como irá manipular seus dados salvando em um Floui Database ou usando conectores HTTP Request para envia-los para outras APIs.

Com este fluxo exemplo é possível **converter**, **enviar** e **verificar** informações de um documento CSV da forma que desejar.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.floui.io/guia/artigos/tutoriais/leitura-de-arquivo-csv.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
