简体   繁体   English

使用带有节点postgres的流中的COPY使用Postgres日期

[英]Postgres date using COPY from stream with node-postgres

I have the following table in PostgreSQL: 我在PostgreSQL中有下表:

CREATE TABLE history (
    request_date timestamp without time zone DEFAULT now() NOT NULL,
    user_id uuid,
    client_id character varying(255),
    resource character varying(255) NOT NULL,
    latency integer NOT NULL
);

I am using node-postgres to perform a COPY FROM task. 我正在使用node-postgres执行COPY FROM任务。 This is what I have so far: 这是我到目前为止的内容:

var pg = require('pg');
var copyFrom = require('pg-copy-streams').from;
var Readable = require('stream').Readable;

pg.connect(config.database.connection, function(err, client, done) {
  var stream = client.query(copyFrom('COPY history FROM STDIN WITH NULL as \'null\''));
  var rs = new Readable;

  rs.push(new Date() + '\tnull\tnull\t"' + req.originalUrl + '"\t' + responseTime);
  rs.push(null);
  rs.on('error', done);

  rs.pipe(stream).on('finish', done).on('error', function (err) {
    console.log(err);
    done();
  });
});

But I am having problems with the date (first column), I dont know what is the format needed by Postgres and I am getting the following error: 但是我在日期(第一列)方面遇到问题,我不知道Postgres需要什么格式,并且出现以下错误:

{ [error: time zone "gmt-0300" not recognized]
  name: 'error',
  length: 175,
  severity: 'ERROR',
  code: '22023',
  detail: undefined,
  hint: undefined,
  position: undefined,
  internalPosition: undefined,
  internalQuery: undefined,
  where: 'COPY history, line 1, column request_date: "Thu Feb 19 2015 09:51:47 GMT-0300 (ART)"',
  file: 'datetime.c',
  line: '926',
  routine: 'DecodeDateTime' }

What should be the correct way to pass that date? 通过该日期的正确方法应该是什么?

new Date().toUTCString() did the trick: new Date().toUTCString()做到了:

rs.push(new Date().toUTCString() + '\tnull\tnull\t"' + req.originalUrl + '"\t' + responseTime);

and then it works :) 然后就可以了:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM