├── .gitignore ├── bezkoder.csv ├── README.md ├── package.json ├── mysql-csv-fastcsv.js ├── mysql-csv-fs.js ├── csv-mysql.js └── mysql-csv-csvwriter.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json -------------------------------------------------------------------------------- /bezkoder.csv: -------------------------------------------------------------------------------- 1 | id,name,description,createdAt 2 | 1,Node.js,JavaScript runtime environment,2019-09-03 3 | 2,Vue.js,JavaScript Framework for building UI,2019-09-06 4 | 3,Angular.js,Platform for building mobile & desktop web app,2019-09-09 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Node.js CSV file - MySQL database example 2 | 3 | For more detail, please visit: 4 | > [Import CSV data into MySQL using Node.js](https://bezkoder.com/node-js-csv-mysql/) 5 | 6 | > [Export MySQL data to CSV file using Node.js](https://bezkoder.com/node-js-export-mysql-csv-file/) 7 | 8 | ## Project setup 9 | ``` 10 | npm install 11 | ``` 12 | 13 | ### Run 14 | ``` 15 | node csv-mysql.js 16 | node mysql-csv-fs.js 17 | node mysql-csv-fastcsv.js 18 | node mysql-csv-csvwriter.js 19 | ``` 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-csv-mysql", 3 | "version": "1.0.0", 4 | "description": "Node.js demo: import csv data to MySQL & extract MySQL data to csv", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1" 7 | }, 8 | "keywords": [ 9 | "csv", 10 | "mysql" 11 | ], 12 | "author": "bezkoder", 13 | "license": "ISC", 14 | "dependencies": { 15 | "csv-writer": "^1.5.0", 16 | "fast-csv": "^3.4.0", 17 | "json2csv": "^4.5.3", 18 | "mysql": "^2.17.1" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /mysql-csv-fastcsv.js: -------------------------------------------------------------------------------- 1 | const mysql = require("mysql"); 2 | const fastcsv = require("fast-csv"); 3 | const fs = require("fs"); 4 | const ws = fs.createWriteStream("bezkoder_mysql_fastcsv.csv"); 5 | 6 | // Create a connection to the database 7 | const connection = mysql.createConnection({ 8 | host: "localhost", 9 | user: "root", 10 | password: "123456", 11 | database: "testdb" 12 | }); 13 | 14 | // open the MySQL connection 15 | connection.connect(error => { 16 | if (error) throw error; 17 | 18 | // query data from MySQL 19 | connection.query("SELECT * FROM category", function(error, data, fields) { 20 | if (error) throw error; 21 | 22 | const jsonData = JSON.parse(JSON.stringify(data)); 23 | console.log("jsonData", jsonData); 24 | 25 | fastcsv 26 | .write(jsonData, { headers: true }) 27 | .on("finish", function() { 28 | console.log("Write to bezkoder_mysql_fastcsv.csv successfully!"); 29 | }) 30 | .pipe(ws); 31 | }); 32 | }); 33 | -------------------------------------------------------------------------------- /mysql-csv-fs.js: -------------------------------------------------------------------------------- 1 | const mysql = require("mysql"); 2 | const Json2csvParser = require("json2csv").Parser; 3 | const fs = require("fs"); 4 | 5 | // Create a connection to the database 6 | const connection = mysql.createConnection({ 7 | host: "localhost", 8 | user: "root", 9 | password: "123456", 10 | database: "testdb" 11 | }); 12 | 13 | // open the MySQL connection 14 | connection.connect(error => { 15 | if (error) throw error; 16 | 17 | // query data from MySQL 18 | connection.query("SELECT * FROM category", function(error, data, fields) { 19 | if (error) throw error; 20 | 21 | const jsonData = JSON.parse(JSON.stringify(data)); 22 | console.log("jsonData", jsonData); 23 | 24 | const json2csvParser = new Json2csvParser({ header: true}); 25 | const csv = json2csvParser.parse(jsonData); 26 | 27 | fs.writeFile("bezkoder_mysql_fs.csv", csv, function(error) { 28 | if (error) throw error; 29 | console.log("Write to bezkoder_mysql_fs.csv successfully!"); 30 | }); 31 | }); 32 | }); 33 | -------------------------------------------------------------------------------- /csv-mysql.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const mysql = require("mysql"); 3 | const fastcsv = require("fast-csv"); 4 | 5 | let stream = fs.createReadStream("bezkoder.csv"); 6 | let csvData = []; 7 | let csvStream = fastcsv 8 | .parse() 9 | .on("data", function(data) { 10 | csvData.push(data); 11 | }) 12 | .on("end", function() { 13 | // remove the first line: header 14 | csvData.shift(); 15 | 16 | // create a new connection to the database 17 | const connection = mysql.createConnection({ 18 | host: "localhost", 19 | user: "root", 20 | password: "123456", 21 | database: "testdb" 22 | }); 23 | 24 | // open the connection 25 | connection.connect(error => { 26 | if (error) { 27 | console.error(error); 28 | } else { 29 | let query = 30 | "INSERT INTO category (id, name, description, created_at) VALUES ?"; 31 | connection.query(query, [csvData], (error, response) => { 32 | console.log(error || response); 33 | }); 34 | } 35 | }); 36 | }); 37 | 38 | stream.pipe(csvStream); 39 | -------------------------------------------------------------------------------- /mysql-csv-csvwriter.js: -------------------------------------------------------------------------------- 1 | const mysql = require("mysql"); 2 | const createCsvWriter = require("csv-writer").createObjectCsvWriter; 3 | 4 | // Create a connection to the database 5 | const connection = mysql.createConnection({ 6 | host: "localhost", 7 | user: "root", 8 | password: "123456", 9 | database: "testdb" 10 | }); 11 | 12 | // open the MySQL connection 13 | connection.connect(error => { 14 | if (error) throw error; 15 | 16 | // query data from MySQL 17 | connection.query("SELECT * FROM category", function(error, data, fields) { 18 | if (error) throw error; 19 | 20 | const jsonData = JSON.parse(JSON.stringify(data)); 21 | console.log("jsonData", jsonData); 22 | 23 | const csvWriter = createCsvWriter({ 24 | path: "bezkoder_mysql_csvWriter.csv", 25 | header: [ 26 | { id: "id", title: "id" }, 27 | { id: "name", title: "name" }, 28 | { id: "description", title: "description" }, 29 | { id: "created_at", title: "created_at" } 30 | ] 31 | }); 32 | 33 | csvWriter 34 | .writeRecords(jsonData) 35 | .then(() => 36 | console.log("Write to bezkoder_mysql_csvWriter.csv successfully!") 37 | ); 38 | }); 39 | }); 40 | --------------------------------------------------------------------------------