问题描述
我有很多行的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 (将#修改为@)