如何解决在具有许多字段的大表上进行转换的node-mssql流无故停止
我有很多行的sql Server表。几乎有2400万,有70列。它是一个数据仓库。我已创建此流逻辑来使用节点mssql
将其保存到CSV文件中。上面的逻辑集中在两个主要策略上
- 按行数分割文件
- 手柄反压
// ... more code above = connection,simple as fast transformation of data (dates,strings,others)
let rowSize = 0;
const rowPage = 20000;
let bufferLast = null;
dbStream.on('data',(row) => {
rowSize++;
if (writeFlow[currentFile] && rowSize >= rowPage) {
rowSize = 0;
const file = `csv-file-name-${fileNameSequence}.tsv`;
generateWriteStream(file);
}
if (writeFlow[currentFile] && bufferLast) {
writeFlow[currentFile] = writeStreamList[currentFile].write(transformation(bufferLast));
bufferLast = null;
}
if (writeFlow[currentFile]) {
writeFlow[currentFile] = writeStreamList[currentFile].write(transformation(row));
} else {
bufferLast = row;
dbStream.pause();
}
});
它可以正常工作,当我下载同一张表但只有一些字段/列(例如10或20)时一切正常,但是当我使用那70个字段/列创建流时,如果发生以下情况,该流将停止在流程事件中间数据库状态表明一切都已发送到应用程序。
问题:如何使node-mssql
流具有很多列的大型表,以便您可以同时编写CSV文件?
PS:我既不使用BCP
也不使用其他驱动程序,因为可以通过节点转换数据,因此可以在其他解决方案上使用它。我真的需要在nodejs应用程序中完成这项工作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。