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
Impressionante como a Dani tem sempre a solução para meus problemas. Conteúdo fantástico!
Faaaaaala, Francisco! A Dani é fera, né? Que massa que curtiu o conteúdo! 💜 🚀
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. 😊
Chefe pediu pra fazer um similar, mais uma vez a rocketseat salvando o dia
Aula muito boa, Dani tem didatica incrível
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.
You will definitely become the top 1 who makes cracks
na moral você é muito foda, rocketseat acertou em cheio com essa tutora, parabéns
Sensacional Dani, eu tô aprendendo js e tô curtindo pra caramba tudo que eu estou vendo por aqui 👏🏼👏🏼👏🏼
Faaaaala, Marcos!
Woow! Que massa! Temos bastante conteúdo bacana de js por aqui! 🚀 💜
Obrigado, meu chefe acabou de pedir um négocio desse, rocketseat sempre pontual 🙏
Wooow!
Espero que o vídeo consiga te ajudar, Thiago! 💜
Conteúdo de qualidade! Obrigado Dani
Que massa que curtiu, Igor! 💜
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!!
Me salvou no projeto aqui! Muito obrigado!!!
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.
Muito top a aula Dani, parabéns e obrigado por compartilhar esse conhecimento conosco!!! Um forte abraço!!!
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
Esse vídeo chegou em Boa hora!! E da forma que foi passado, ficou fácil é aprender 🤓🤓
Me ajudou demais, exatamente o que eu procurava. Obrigado e parabéns.
Não assisti mas já é top só pelo Título, com a Dani então... Bugou a Mente!
Boa! HAHAHAHA
E curtiu o conteúdo, Iberno? 💜 🚀
@@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!
Poderiam montar um mini BI, com interface e relatório.. coisa pequena pra direcionar os que principalmente desenvolvem sozinhos.. 🙌
#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?
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
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
Muito Legal esse conteúdo, Parabéns Dani... Sucesso...
oi, boa noite! esse projetinho ta no github?
show de bola Dani, parabéns 👍
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.
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"
@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
@@LucasIsraelOF to tentando usar essa regex e a linha splitada volta como undefined, ou então não separa nada..como resolver ??
Meu chefe pediu pra eu fazer um igualzinho, só muda a extensão que é .TXT
Top demais vlw RocketSeat
Woow! Que massa, Arlan! Espero que dê tudo certo! 😍 💜
@@rocketseat Espero tbm kk
Obrigado abraços.
faz um code/drops de prisma pls :3
Faaaaala, Leandro!
Opa, sugestão anotada aqui! 💜
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 :)
@Kelven Luiz valeu resolveu o meu também
Salvou heim
Obrigado!!
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.
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?
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?
Pra ler linha a linha será que um split por
não resolve?
Como usa isso em uma impressora térmica pra imprimir os códigos de Barras
Can i use this on windows 7? Thanks!
Adoraria saber mais sobre os modulos im.
Já viram o comando 'console.table()' que o JS possui?
É um ótimo recurso.
É o melhor
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}
Por que não tratou o arquivo salvo temporariamente como uma readable stream?
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.
Como poderia colocar um nome direto neste arquivo csv na products... para salvar o arquivo com um nome?
Ó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
Ac
Muito top conteúdo de qualidade!
Que massa que curtiu, Wesley! 💜
Thanks! Your video content is the safest and most useful
da onde veio essa tela dos 14:00?
I love your tutorials
Does knowing how to play softal tutorial necessary?
Thanks, worked for me!
Mto bom o vídeo!!
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;
~~~~~~
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'
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.
Muitoooooooooooo obrigado , s2
TNice tutorials is going in my helpful tutorials playlist.
Conteúdo muito bom!
Que massa que curtiu, Henrique! 💜
thanks, Thanos, glad you're getting into soft instead of...well...
Much love
thank u soo much it helped a lot
informative video good sir, Gracias
Alguem sabe como eu salvo meu resultado do meu código em um arquivo csv?
Por favor é para uma empresa
Fale mais sobre o stream do node
Faaaaala, Diego!
Pode deixar que anotei sua sugestão aqui! 💜
@@rocketseat Vou esperar junto com o Diego por esse codedrops 💜
Muito bom 💯
Que massa que curtiu, Daniel! 💜
Bro RUclips way to comfy with these double 15 second adds
Works well!! DANKEEE
I agree I'm an old SONY ACID Head.you want complicated try ABLETON and more tourture..with there controller ABELTON PUSH.
Tell soft soft I love what they did with the $15 doallors one %
Pq reliaza um readableFIle.push(null) ?
Acredito que seja para indicar o final da leitura
Pra informar pra readable stream que a leitura do arquivo foi finalizada
Esse método funciona com outros tipos como .xls
Querendo ou não é um jeito simples de transferir dados entre sistemas distintos
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?
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;
@@darcionunodecarvalho9073 Vlw demais, deu certo aqui também, obrigado.
@@darcionunodecarvalho9073 ajudou muito. obrigado
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.
error TS2339: Property 'buffer' does not exist on type 'File | undefined'. Estou com esse error ao utilizar o {buffer} = file
Eu também. Conseguiu resolver?
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;
@@darcionunodecarvalho9073 Deu certinho aqui também! Valeuu!
Você pode fazer parser com node, só não deveria…
video and try that on your own DAW. Be patient. It's not so complicated.
If it weren't for you, I don't know what to do, I don't want to spend money on it
The soft of Gaia it really isn’t
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
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 };