如何从字符串中导入CSV数据到Postgres表?

时间:2017-10-12 11:51:58

标签: postgresql csv

如果你想从文件加载数据,我读了这个解决方案How to import CSV file data into a PostgreSQL table?似乎没问题。

我从API端点下载CSV数据,并希望尽可能避免保存到文件中。

我有一个运行此查询的NodeJS应用程序。

所以,我可以以某种方式传递文件路径,但是,例如,包含查询内容的字符串?

这样的事情:

COPY zip_codes FROM 'john,doe,1982-02-01' WITH (FORMAT csv);

1 个答案:

答案 0 :(得分:1)

from stdin我想:

f=# create table aa(a text, b text, c date);
CREATE TABLE
f=# copy aa from stdin delimiter ',';
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> john,doe,1982-02-01
>> \.
f=# select * from aa;
  a   |  b  |     c
------+-----+------------
 john | doe | 1982-02-01
(1 row)

<强>更新

当您显示node.js时,您可能正在寻找https://github.com/brianc/node-pg-copy-streams

这是一些例子:

JS:

client.connect()
var copyFrom = require('pg-copy-streams').from;

var stream = client.query(copyFrom("COPY aa FROM STDIN DELIMITER ','"));
stream.write("john,doe,2017-02-01\n");
stream.end();
var queryresult = client.query('select * from aa', function(err,res) {
  console.log(err,res.rows);
  client.end();
});

输出:

C:\Users\Vao\vatest>node t.js
null [ anonymous { a: 'john', b: 'doe', c: 2017-02-01T00:00:00.000Z } ]

SQL:

f=# select * from aa;
  a   |  b  |     c
------+-----+------------
 john | doe | 2017-02-01
(1 row)