From 35b7f8c0f6bac9b507d7481e5b7372967fb86ea1 Mon Sep 17 00:00:00 2001 From: danbulant Date: Sat, 28 Sep 2019 16:22:56 +0200 Subject: [PATCH] sql2csv 1.0.0 --- sql2csv.js | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/sql2csv.js b/sql2csv.js index e1e179d..d712794 100644 --- a/sql2csv.js +++ b/sql2csv.js @@ -36,6 +36,7 @@ class sql2csv { } if(!this.options.prefix) this.options.prefix = "[SQL2CSV] "; if(this.options.colors == undefined) this.options.colors = true; + if(this.options.crlf == undefined) this.options.crlf = false; if(!this.options.skipMysqlCheck){ try { @@ -53,13 +54,43 @@ class sql2csv { } query(sql){ + var self = this; return new Promise((resolve, reject) => { this.conn.query(sql, function (err, result) { if (err) reject(err); - console.log(result); - resolve(result); + var csv = ""; + var keys = []; + var keysEmpty = true; + result.forEach((row) => { + for(var key in row){ + if(keysEmpty) keys[keys.length] = key; + var column = row[key]; + if(typeof column == "string"){ + column = column.replace('"', '""');//double quotes, regarding https://stackoverflow.com/questions/4617935 + if(column.indexOf(",") != -1){ + column = '"' + column + '"'; + } + } + csv += column + ","; + } + keysEmpty = false; + if(self.options.crlf) csv += "\r"; + csv += "\n"; + }); + if(self.options.showNames){ + var header = ""; + keys.forEach((key) => { + key.replace('"', '""');//double quotes, regarding https://stackoverflow.com/questions/4617935 + key.replace(",", '","'); + header += key + ","; + }); + if(self.options.crlf) header += "\r"; + header += "\n"; + csv = header + csv; + } + resolve(csv); }); - } + }); } //update certain option setOption(name, value){