Como ler arquivo .csv com NodeJS - Code/drops #90

Поделиться
HTML-код
  • Опубликовано: 7 ноя 2024
  • Já precisou lidar com arquivos .csv? No vídeo de hoje, nossa educadora Dani Evangelista vai mostrar como fazer leitura e manipulação dos dados de um arquivos .csv com NodeJS.
    -----
    Confira a grade completa de conteúdos do canal aqui: rocketseat.com...
    Conecte-se a 200mil devs e avance para o próximo nível com a nossa plataforma: rocketseat.com...
    Cadastre-se na nossa plataforma: app.rocketseat...
    Junte-se a mais de 392mil devs em nossa comunidade no Discord: / discord
    Acompanhe a Rocketseat nas redes sociais:
    Twitter: @rocketseat
    Facebook: @rocketseat
    Instagram: @rocketseat_oficial
    Nos ouça também no Spotify:
    Podcast Faladev
    Podcast Alumni
    Podcast Proxy

Комментарии • 109

  • @franciscomenezes6970
    @franciscomenezes6970 2 года назад +6

    Impressionante como a Dani tem sempre a solução para meus problemas. Conteúdo fantástico!

    • @rocketseat
      @rocketseat  2 года назад

      Faaaaaala, Francisco! A Dani é fera, né? Que massa que curtiu o conteúdo! 💜 🚀

  • @luisguilhermeselenko3579
    @luisguilhermeselenko3579 3 года назад +12

    Descobri o Prisma em um dos Code/Drops do canal e gostaria muito fizessem um vídeo falando sobre ele. Achei muito fácil e rápido trabalhar com ele. E nada melhor que um vídeo dos mestres da Rocketseat para aprofundar um pouco mais sobre ele. 😊

  • @Coimbrox
    @Coimbrox 3 года назад +6

    Chefe pediu pra fazer um similar, mais uma vez a rocketseat salvando o dia

  • @gabrielalvez1845
    @gabrielalvez1845 6 месяцев назад

    Aula muito boa, Dani tem didatica incrível

  • @brunoweber3587
    @brunoweber3587 3 года назад

    A Dani é fera demais! Sou aluno dela no ignite na trilha de Node.js e a cada vídeo ela surpreende na forma como ensina e simplifica as coisas.

  • @nunoteixeira3226
    @nunoteixeira3226 2 года назад

    You will definitely become the top 1 who makes cracks

  • @modohu3exe180
    @modohu3exe180 3 года назад +1

    na moral você é muito foda, rocketseat acertou em cheio com essa tutora, parabéns

  • @maviniii
    @maviniii 3 года назад

    Sensacional Dani, eu tô aprendendo js e tô curtindo pra caramba tudo que eu estou vendo por aqui 👏🏼👏🏼👏🏼

    • @rocketseat
      @rocketseat  3 года назад

      Faaaaala, Marcos!
      Woow! Que massa! Temos bastante conteúdo bacana de js por aqui! 🚀 💜

  • @ThiagoSilva-ps9hd
    @ThiagoSilva-ps9hd 3 года назад

    Obrigado, meu chefe acabou de pedir um négocio desse, rocketseat sempre pontual 🙏

    • @rocketseat
      @rocketseat  3 года назад

      Wooow!
      Espero que o vídeo consiga te ajudar, Thiago! 💜

  • @igorlamoia1540
    @igorlamoia1540 3 года назад +2

    Conteúdo de qualidade! Obrigado Dani

    • @rocketseat
      @rocketseat  3 года назад

      Que massa que curtiu, Igor! 💜

  • @ygorch
    @ygorch 3 года назад

    Arrazou, Dani!! Tu conseguiu desmistificar a leitura de arquivos com o Node para mim! Sério mesmo! Tá muito massa esse vídeo! Abração!!

  • @joaobebber
    @joaobebber 2 года назад

    Me salvou no projeto aqui! Muito obrigado!!!

  • @anselmonascimento3324
    @anselmonascimento3324 3 года назад +1

    Excelente vídeo , já vou aproveitar e praticar em cima desse exemplo.
    Poderia mostrar esse vídeo de streaming com arquivos gigantes por exemplo de arquivo Excel.

  • @jair-araujo
    @jair-araujo 3 года назад

    Muito top a aula Dani, parabéns e obrigado por compartilhar esse conhecimento conosco!!! Um forte abraço!!!

  • @adrianorodrigues3148
    @adrianorodrigues3148 3 года назад

    Muito bom Dani, é possível com multer, ao invés de ir pegando posição por posição para inserir no banco, pegar o dado pelo nome da coluna no banco

  • @85arlin
    @85arlin 3 года назад

    Esse vídeo chegou em Boa hora!! E da forma que foi passado, ficou fácil é aprender 🤓🤓

  • @waldirtiagodias
    @waldirtiagodias 2 года назад

    Me ajudou demais, exatamente o que eu procurava. Obrigado e parabéns.

  • @ibernohoffmann5427
    @ibernohoffmann5427 3 года назад

    Não assisti mas já é top só pelo Título, com a Dani então... Bugou a Mente!

    • @rocketseat
      @rocketseat  3 года назад +1

      Boa! HAHAHAHA
      E curtiu o conteúdo, Iberno? 💜 🚀

    • @ibernohoffmann5427
      @ibernohoffmann5427 3 года назад

      @@rocketseat com certeza.. parabéns a Dani pelo conteúdo e a Rocketseat por tudo que tem representante na comunidade.. Ao Infinito e Além!

    • @ibernohoffmann5427
      @ibernohoffmann5427 3 года назад

      Poderiam montar um mini BI, com interface e relatório.. coisa pequena pra direcionar os que principalmente desenvolvem sozinhos.. 🙌

  • @rumoaotopo.s.a
    @rumoaotopo.s.a 3 года назад

    #PR Olá Dani, muito bom seu vídeo. Não testei ainda, mais esse mesmo exemplo pode ser utilizado com arquivos grandes? Da forma que você mostra, cada interação de uma linha faz um insert no Postgres?

    • @rumoaotopo.s.a
      @rumoaotopo.s.a 3 года назад

      Olá Dani, muito obrigado pela resposta no #PR. Eu fiz o teste consegui e lê e importar um arquivo CSV com mais de 1 milhão de linhas em 2,41m. Para isso eu tive que adaptar o código quebrando o array em vários arrays menores e a cada pedaço eu envio para função que faz o insert no banco usando o createMany. Fazia tempo que esperava por um conteúdo desses. Quando puder faça um conteúdo de worker_threads, clusters do Node.js com typescript. Obrigado

  • @karismadance2008
    @karismadance2008 2 года назад

    Holah Dani vc è top demais. Uma perguntinha como faço nesse exemplo a manipolar a sò primeira linea. Ou seija, na primeira linea eu tenho o head do csv e o queria pegar ele para repetir como mas vezes nas lineas. Obrigadao

  • @jailsonsantos555
    @jailsonsantos555 3 года назад

    Muito Legal esse conteúdo, Parabéns Dani... Sucesso...

  • @wellingtonsantos8887
    @wellingtonsantos8887 2 года назад

    oi, boa noite! esse projetinho ta no github?

  • @walbertsca
    @walbertsca 2 года назад

    show de bola Dani, parabéns 👍

  • @OsvaldoKalvaitirFilho
    @OsvaldoKalvaitirFilho 3 года назад +7

    Uma observação, por mais que eu não vi o vídeo inteiro, mas se somente dar o split na vírgula pode ocorrer erros em um csv pois você pode ter virgula em um campo texto, ex: "Coca Cola 1,5 litros", neste caso o excel quando gera o csv, ele coloca o conteúdo entre aspas duplas, então precisa separar as colunas (dar split) somente com as vírgulas que estão foras das aspas duplas.

    • @LucasIsraelOF
      @LucasIsraelOF 3 года назад +2

      Encontro esse mesmo problema em todo csv. Até mesmo naqueles que são gerados pelo Libreoffice que usam ponto-vírgula no lugar da vírgula. Resolvo com essa regex "/(?:^|;)(\"(?:[^\"]+|\"\")*\"|[^;]*)/g"

    • @OsvaldoKalvaitirFilho
      @OsvaldoKalvaitirFilho 3 года назад +1

      @Victor Rodrigues então Victor, em conversões de dados que são feitos todo dia, como na empresa que trabalho por exemplo, não vejo viável a opção de localizar e substituir, pois numa tabela com dezenas de campos e milhares de registros, você pode retirar o caractere em um campo importante (um texto por exemplo), ainda mais tem cenários que o cliente mesmo importa seu próprio csv (ex: tabela de impostos fiscais), aí vc não vai falar pra ele fazer um replace neh rsrs.. mas isso não é dificil ser contornado, como o regex do Lucas, só quis fazer uma observação mesmo.. valeu

    • @crhisdaywalk3r
      @crhisdaywalk3r 2 года назад

      @@LucasIsraelOF to tentando usar essa regex e a linha splitada volta como undefined, ou então não separa nada..como resolver ??

  • @ArlanSonic
    @ArlanSonic 3 года назад

    Meu chefe pediu pra eu fazer um igualzinho, só muda a extensão que é .TXT
    Top demais vlw RocketSeat

    • @rocketseat
      @rocketseat  3 года назад +1

      Woow! Que massa, Arlan! Espero que dê tudo certo! 😍 💜

    • @ArlanSonic
      @ArlanSonic 3 года назад

      @@rocketseat Espero tbm kk
      Obrigado abraços.

  • @peroconino
    @peroconino 3 года назад +7

    faz um code/drops de prisma pls :3

    • @rocketseat
      @rocketseat  3 года назад

      Faaaaala, Leandro!
      Opa, sugestão anotada aqui! 💜

  • @renandorneles3217
    @renandorneles3217 2 года назад +2

    No momento de armazenar o buffer, ao colocar
    const { buffer } = file;
    Informava que buffer não era uma propriedade de file.
    Resolvi alterando por:
    const buffer = file.buffer;
    Caso alguém tenha este mesmo problema :)

  • @NogueiraMaier
    @NogueiraMaier 2 года назад

    npm install got@10.0.0-beta.2resolveu isso para mim (ambos os métodos confirmados para funcionar). Desculpe o barulho.
    nao entendir
    mais esta funcionando deppos.
    obrigado.

  • @luisantoniosantossilvaluig4586
    @luisantoniosantossilvaluig4586 2 года назад

    Boa tarde. Por gentileza, tenho uma questão. Se o csv tiver cabeçalho como faço para que o node não o leia?

  • @lucasmarcelo4849
    @lucasmarcelo4849 Год назад

    Tenho uma duvida, nesse exemplo a gente tem o caminho feliz, um arquivo leve, a cada linha do arquivo a Dani deu um push pra dentro de um array, mas em um cenário aonde o csv tem 1 milhão de linhas, o node não comporta isso tudo dentro de uma variável por causa da pouco memória, como a gente faria essa leitura e inserção no banco, eu tentei colocar em um pipe aonde cada linha do meu stream eu dava um insert no banco, porem o async await de pipe era ignorado. Exemplo; "
    readableFile.on("data", async (line)=> {
    await InsertIntoBd(line)
    }) "
    Simples mente o async await é ignorado, eu tive que fazer
    readableFile.on("data", async (line)=> {
    try {
    readableFile.pause()
    await InsertIntoBd(line)
    } finaly {
    readableFile.resume()
    }
    }) "
    Porém isso deixou o processo lento de mais, o que eu poderia fazer?

  • @danilomourelle
    @danilomourelle 3 года назад

    Pra ler linha a linha será que um split por
    não resolve?

  • @heliobarros5996
    @heliobarros5996 3 года назад +2

    Como usa isso em uma impressora térmica pra imprimir os códigos de Barras

  • @ofralda6297
    @ofralda6297 2 года назад

    Can i use this on windows 7? Thanks!

  • @olirabr
    @olirabr 3 года назад

    Adoraria saber mais sobre os modulos im.

  • @victorpinasarnault9135
    @victorpinasarnault9135 3 года назад +4

    Já viram o comando 'console.table()' que o JS possui?
    É um ótimo recurso.

  • @NogueiraMaier
    @NogueiraMaier 2 года назад

    estou com erro que nao consigo async (request: Request, response: Response) => {
    //console.log(request.file?.buffer.toString("utf-8"));
    const { file } = request;
    const { buffer } = file; resolver
    MemoryStorage only: A Buffer containing the entire file.
    A propriedade 'buffer' não existe no tipo 'File | undefined'.ts(2339)
    Nenhuma correção rápida disponível
    no const{ buffer}

  • @Iacapuca
    @Iacapuca 2 года назад

    Por que não tratou o arquivo salvo temporariamente como uma readable stream?

  • @lestercerioli1630
    @lestercerioli1630 3 года назад

    Dani tudo bem? Gostaria que voce falasse sobre APIs com Node como por exemplo, implementa;ção de Jwt. Sou de Dotnet mas tenho atuado em projetos de Node e sei que é poss[ivel implementarmos APIs robustas assim como em Dotnet, podemos fazer com Node, o que pelos testes que fiz se torna um processo muito mais rápido com Node mas gostaria que você compartilhasse dicas, se possível.

  • @andredesouza
    @andredesouza 2 года назад

    Como poderia colocar um nome direto neste arquivo csv na products... para salvar o arquivo com um nome?

  • @wellingtonsouza2945
    @wellingtonsouza2945 3 года назад +2

    Ótimo conteúdo, parabéns!
    Alguém poderia implementar a pesquisa do item lido para ver se já está cadastrado e tbem criar um front integrando?
    Gostaria de utilizar esses recursos para fazer leitura/importação de arquivos XML de NF-e s.
    Acredito que seria de grande ajuda a muitos que estão iniciando na programação web

  • @wesleyguerra6563
    @wesleyguerra6563 3 года назад

    Muito top conteúdo de qualidade!

    • @rocketseat
      @rocketseat  3 года назад

      Que massa que curtiu, Wesley! 💜

  • @fabiana7289
    @fabiana7289 2 года назад

    Thanks! Your video content is the safest and most useful

  • @pedrohenriquefernandes6685
    @pedrohenriquefernandes6685 3 года назад

    da onde veio essa tela dos 14:00?

  • @italomachado3150
    @italomachado3150 2 года назад

    I love your tutorials

  • @RAPIDO379
    @RAPIDO379 2 года назад

    Does knowing how to play softal tutorial necessary?

  • @JoseCarlos-dy5tk
    @JoseCarlos-dy5tk 2 года назад

    Thanks, worked for me!

  • @thaueferreira3858
    @thaueferreira3858 2 года назад

    Mto bom o vídeo!!

  • @NogueiraMaier
    @NogueiraMaier 2 года назад

    erro nao consigo resolver Help. o codigo esta 100% igual o qe foi que esqueci de instalare?
    src/routes.ts:18:16 - error TS2339: Property 'buffer' does not exist on type 'File | undefined'.
    18 const { buffer } = file;
    ~~~~~~

  • @ronalddurand2680
    @ronalddurand2680 2 года назад

    Boa goste do conteudo Dani, pore deu um erro que não consegui resolver? const {buffer } = file Property 'buffer' does not exist on type 'File | undefined'

    • @lucapoe
      @lucapoe Год назад

      Opa, boa noite. Acho que cheguei tarde demais e suponho que já tenha resolvido o erro. Mas é a tipagem do Typescript te protegendo! Acontece que o arquivo pode ser do tipo File ou undefined, por conseguinte, a propriedade "buffer" pode acabar não existindo. Você pode resolver isso com o if, ou usando esse código:
      const buffer = file?.buffer;
      o "?" é usado para encadear essas propriedades que *podem* ser null ou undefined. Caso seja o caso, ele retornará undefined.

  • @rafaelcarlos3815
    @rafaelcarlos3815 3 года назад

    Muitoooooooooooo obrigado , s2

  • @leaoarthur
    @leaoarthur 2 года назад

    TNice tutorials is going in my helpful tutorials playlist.

  • @HenriqueSilva-bb6pw
    @HenriqueSilva-bb6pw 3 года назад

    Conteúdo muito bom!

    • @rocketseat
      @rocketseat  3 года назад

      Que massa que curtiu, Henrique! 💜

  • @chilukproducoes
    @chilukproducoes 2 года назад

    thanks, Thanos, glad you're getting into soft instead of...well...

  • @koji5230
    @koji5230 2 года назад

    Much love

  • @actiontecnologiasinc.7692
    @actiontecnologiasinc.7692 2 года назад

    thank u soo much it helped a lot

  • @deviltatsukai2201
    @deviltatsukai2201 2 года назад

    informative video good sir, Gracias

  • @berlim7pkrl936
    @berlim7pkrl936 2 года назад

    Alguem sabe como eu salvo meu resultado do meu código em um arquivo csv?
    Por favor é para uma empresa

  • @gambaretts
    @gambaretts 3 года назад +1

    Fale mais sobre o stream do node

    • @rocketseat
      @rocketseat  3 года назад

      Faaaaala, Diego!
      Pode deixar que anotei sua sugestão aqui! 💜

    • @kayorenato
      @kayorenato 3 года назад

      @@rocketseat Vou esperar junto com o Diego por esse codedrops 💜

  • @oDanielSantiago
    @oDanielSantiago 3 года назад

    Muito bom 💯

    • @rocketseat
      @rocketseat  3 года назад

      Que massa que curtiu, Daniel! 💜

  • @jho508
    @jho508 2 года назад

    Bro RUclips way to comfy with these double 15 second adds

  • @luanmarques3618
    @luanmarques3618 2 года назад

    Works well!! DANKEEE

  • @italohenrique01
    @italohenrique01 2 года назад

    I agree I'm an old SONY ACID Head.you want complicated try ABLETON and more tourture..with there controller ABELTON PUSH.

  • @BULLZINX
    @BULLZINX 2 года назад

    Tell soft soft I love what they did with the $15 doallors one %

  • @PedroHenriqueTSI
    @PedroHenriqueTSI 3 года назад +1

    Pq reliaza um readableFIle.push(null) ?

    • @rumoaotopo.s.a
      @rumoaotopo.s.a 3 года назад +2

      Acredito que seja para indicar o final da leitura

    • @davidfergihhh123
      @davidfergihhh123 3 года назад +2

      Pra informar pra readable stream que a leitura do arquivo foi finalizada

  • @cleidisonbarradas
    @cleidisonbarradas 3 года назад

    Esse método funciona com outros tipos como .xls

  • @cntitv988
    @cntitv988 3 года назад

    Querendo ou não é um jeito simples de transferir dados entre sistemas distintos

  • @marcomodest0
    @marcomodest0 3 года назад

    No minuto 23:19 quando executo yarn dev eu recebo um erro
    error TS2339: Property 'buffer' does not exist on type 'File | undefined'.
    16 const { buffer } = file;
    Alguém poderia ajudar por gentileza?

    • @darcionunodecarvalho9073
      @darcionunodecarvalho9073 3 года назад +3

      No meu código também acusou o mesmo problema. É alguma configuração do TypeScript.
      Eu não sei onde configurar isso, então eu mudei essa linha pelo código abaixo e funcionou...
      const buffer = file?.buffer;

    • @marcomodest0
      @marcomodest0 3 года назад +1

      @@darcionunodecarvalho9073 Vlw demais, deu certo aqui também, obrigado.

    • @andredesouza
      @andredesouza 2 года назад +1

      @@darcionunodecarvalho9073 ajudou muito. obrigado

  • @osiellima7764
    @osiellima7764 2 года назад

    with it in a few weeks or months if I pour enough ti and effort into it. I'll be watcNice tutorialng many more of your videos for tips and inspiration.

  • @vitorcarvalho3555
    @vitorcarvalho3555 3 года назад

    error TS2339: Property 'buffer' does not exist on type 'File | undefined'. Estou com esse error ao utilizar o {buffer} = file

    • @marcomodest0
      @marcomodest0 3 года назад

      Eu também. Conseguiu resolver?

    • @darcionunodecarvalho9073
      @darcionunodecarvalho9073 3 года назад +5

      No meu código também acusou o mesmo problema. É alguma configuração do TypeScript.
      Eu não sei onde configurar isso, então eu mudei essa linha pelo código abaixo e funcionou...
      const buffer = file?.buffer;

    • @tutorialja
      @tutorialja 2 года назад +1

      @@darcionunodecarvalho9073 Deu certinho aqui também! Valeuu!

  • @aristotelescoutinho
    @aristotelescoutinho 3 года назад

    Você pode fazer parser com node, só não deveria…

  • @Gabrielb2o7r
    @Gabrielb2o7r 2 года назад

    video and try that on your own DAW. Be patient. It's not so complicated.

  • @linksanuncio7063
    @linksanuncio7063 2 года назад

    If it weren't for you, I don't know what to do, I don't want to spend money on it

  • @Gabriel-ii4vp
    @Gabriel-ii4vp 2 года назад

    The soft of Gaia it really isn’t

  • @onlinelanhouseinformatica1515
    @onlinelanhouseinformatica1515 2 года назад

    It s not that hard. I basically just started last night by editing my softs. Trying to setup master them. TNice tutorialngs cos in slowly. But it ain't that

  • @NogueiraMaier
    @NogueiraMaier 2 года назад

    achei muito bom estou estudando ele mais no meio deu erro .
    uso visual code nodejs. yarn,
    parabens.
    qual seria o comando para ler um dederminando campo por exem. 75991294305 e numero sem ddd para ferificar os sem add . grato. ainda sou iniciante
    import {Request,Response, Router } from "express";
    //import { readFile} from "fs" ler um arquivo dentro da maquina em uma paasta temp...
    import { Readable } from "stream";
    import readline from "readline";
    import multer from "multer";
    const multerConfig = multer();
    const router = Router();
    router.post(
    "/products",
    multerConfig.single("file"),
    async (request: Request, response: Response) => {
    console.log(request.file?.buffer.toString("utf-8")); aqui só funcionou quando coloquei a ?
    const { file } = request;
    const { buffer } = file; //aqui da erro no baffer MemoryStorage only: A Buffer containing the entire file.
    const readableFile= new Readable();
    readableFile.push(buffer);
    readableFile.push(null);
    const productsLine = readline.createInterface({
    input: readableFile,
    });
    for await(let line of productsLine) {
    console.log(line);
    }

    return response.send();
    }
    );
    export { router };