在具有许多字段的大表上进行转换的node-mssql流无故停止

我有很多行的SQL Server表。几乎有2400万,有70列。它是一个数据仓库。我已创建此流逻辑来使用节点mssql将其保存到CSV文件中。上面的逻辑集中在两个主要策略上

  1. 按行数分割文件
  2. 手柄反压
// ... 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应用程序中完成这项工作

iCMS 回答:在具有许多字段的大表上进行转换的node-mssql流无故停止

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1707661.html

大家都在问