0

PGにtsvファイル〜1.5 Gを入力する必要があります。ストリーミングとpg-copy-streamを使用する予定で、直接コピーで機能しました。次に、いくつかの変換を行う必要があり、貫通パイプを追加しましたが、失敗しました。おそらくバッファの問題であり、誰かがこれを行ったに違いないと思います。

元のtsvfile.txtの形式は次のとおりです。

V1\tV2\tV3\tV4\n
V2\tV2\tV3\tV4\n

コードは

var fs = require('fs'), pg = require('pg'), es = require('es'), pgs = require('pg-copy-stream');
var filename = 'tsvfile.txt';
var pgkey = 'somepgkey';
pg.connect(pgkey, function(err, client, done){
    var query = client.query(pgs.from('COPY table1 (C1, C2, C3, C4) FROM STDIN'));
    var fstream = fs.createReadStream(filename);
    fstream.pipe(es.split())
           .pipe(es.mapSync(function(line){
                var midline = line.split('\t').map(sometransform()).join('\t');
                return midline + '\n';
                //not sure \n is necessary here
            }).pipe(query)
             .on('end', done)
             .on('err', somethingelse)
})

エラーは でしたが error: extra data after last expected column、最初の 2 つのパイプを削除すると正常に動作します。

4

2 に答える 2