Javascript 将MySQL查询流式传输到NodeJS中的CSV文件

Javascript 将MySQL查询流式传输到NodeJS中的CSV文件,javascript,mysql,node.js,csv,Javascript,Mysql,Node.js,Csv,如何在不将所有行加载到内存的情况下,高效地将mysql结果集写入CSV格式的文件?NodeJS代码。此示例适用于npm包csv stringify、mysql或mysql2以及任何支持async关键字的节点版本 const csvstringify=需要“csv-stringify”; 常数fs=要求“fs”; const outputStream=fs.createWriteStream'output.csv',{encoding:'utf8'}; //在开始写入之前捕获outputStrea

如何在不将所有行加载到内存的情况下,高效地将mysql结果集写入CSV格式的文件?NodeJS代码。

此示例适用于npm包csv stringify、mysql或mysql2以及任何支持async关键字的节点版本

const csvstringify=需要“csv-stringify”; 常数fs=要求“fs”; const outputStream=fs.createWriteStream'output.csv',{encoding:'utf8'}; //在开始写入之前捕获outputStream上的事件 const finishedWriting=新的Promiser解决方案,拒绝=> outputStream.on'finished',resolve.on'error',reject; const connection=\uu在此处创建mysql2连接对象__ const generator=connection.connection.query'SELECT…'; 让recordsProcessed=0; 试一试{ 等待新的承诺者解决,拒绝=>{ //使用连接池时,仅调用“错误”连接事件 //当enableKeepAlive为true时。请参阅: // https://github.com/sidorares/node-mysql2/issues/677issuecomment-588530194 //如果没有此处理程序,则如果数据库连接失败,此代码将挂起 //读取结果集时丢失。 连接。在“错误”上,拒绝; 发电机 .on'result',row=>++recordsProcessed//以计算行为例 .stream{highWaterMark:10} .在“错误”上,拒绝 .在“结束”时,下决心 .pipecsvstringify{header:true} .pipeoutputStream .on'error',error=>{ //处理流写入错误 //另见https://github.com/sidorares/node-mysql2/issues/664 //数据正在从服务器发送到客户端;在不调用destroy的情况下 //连接将返回到池,并且将不可用 //从不调用为销毁提供的回调。 connection.destroy;//这似乎会导致文件描述符泄漏 拒绝错误; }; }; } 最后{ connection.on'error',error=>console.logerror;//删除处理程序。 //有更好的办法吗? } 等待写完;
此示例适用于npm包csv stringify、mysql或mysql2以及任何支持async关键字的节点版本

const csvstringify=需要“csv-stringify”; 常数fs=要求“fs”; const outputStream=fs.createWriteStream'output.csv',{encoding:'utf8'}; //在开始写入之前捕获outputStream上的事件 const finishedWriting=新的Promiser解决方案,拒绝=> outputStream.on'finished',resolve.on'error',reject; const connection=\uu在此处创建mysql2连接对象__ const generator=connection.connection.query'SELECT…'; 让recordsProcessed=0; 试一试{ 等待新的承诺者解决,拒绝=>{ //使用连接池时,仅调用“错误”连接事件 //当enableKeepAlive为true时。请参阅: // https://github.com/sidorares/node-mysql2/issues/677issuecomment-588530194 //如果没有此处理程序,则如果数据库连接失败,此代码将挂起 //读取结果集时丢失。 连接。在“错误”上,拒绝; 发电机 .on'result',row=>++recordsProcessed//以计算行为例 .stream{highWaterMark:10} .在“错误”上,拒绝 .在“结束”时,下决心 .pipecsvstringify{header:true} .pipeoutputStream .on'error',error=>{ //处理流写入错误 //另见https://github.com/sidorares/node-mysql2/issues/664 //数据正在从服务器发送到客户端;在不调用destroy的情况下 //连接将返回到池,并且将不可用 //从不调用为销毁提供的回调。 connection.destroy;//这似乎会导致文件描述符泄漏 拒绝错误; }; }; } 最后{ connection.on'error',error=>console.logerror;//删除处理程序。 //有更好的办法吗? } 等待写完;