Hamilton T da Silva
Hamilton T da Silva
BBuildShip
Created by Hamilton T da Silva on 3/3/2024 in #❓・buildship-help
How upload data to MySQL from a CSV file?
I am trying to create a node to upload data to my MySQL table, using a CSV file as source. My code is this: import mysql from 'mysql2/promise'; import { createReadStream } from 'fs'; import { parse } from 'fast-csv'; export default async function loadCsvToMySql({ host, database, username, password, fileName }) { const connection = await mysql.createConnection({ host, user: username, password, database, }); const fullFilePath = process.env.BUCKET_FOLDER_PATH + "/" + fileName; // Definir a função streamFactory const streamFactory = () => createReadStream(fullFilePath);
await connection.query( LOAD DATA LOCAL INFILE '${fullFilePath}' INTO TABLE shapes_aux FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS, [ ], { streamFactory } ); const [rows] = await connection.query('SELECT COUNT(*) AS count FROM shapes_aux'); await connection.end(); return { count: rows[0].count }; } But I am receiving this error: "error": "As a result of LOCAL INFILE command server wants to read arquivo.csv file, but as of v2.0 you must provide streamFactory option returning ReadStream." I couldn´t find a solution. Can someone help me? Thanks!
4 replies