我试图将CSV字符串插入PostgreSQL数据库。我不能为我的生活找到一个没有包含文件的答案。我明白了
"\COPY table FROM 'path/to/csv.csv' CSV HEADER"
但是我使用的是Node并且有一个包含以下值的javascript字符串:
"1, 2, 3, 4, 5, 6, 7"
我已经拥有了表模式,而我尝试插入的csv字符串将始终匹配。但是我无法从一个字符串中插入它而我无法从文件中选择它。
谢谢!
答案 0 :(得分:0)
你试过了吗?
echo "1, 2, 3, 4, 5, 6, 7" | psql -c "COPY table FROM STDIN DELIMITER AS ',' NULL AS ''"
答案 1 :(得分:0)
我必须从我的源流创建一个新的Stream,因为我的源代码的每一行都需要多次插入和一些转换。
为了能够将其推入PostgreSQL,我将其编码回ASCII。
长话短说:
rs.push(`${raw_id}, ${sensor._id}, ${value}, ${date}\r`.toString('ascii'));
答案 2 :(得分:-1)
如果没有更多信息,很难给出完整答案,但如果您的表只有一列,并且您想插入该数字列表,则可以这样做:
INSERT INTO table VALUES (unnest(string_to_array('1, 2, 3, 4, 5, 6, 7', ', ')));
每个数字会有一行,它们将作为字符串插入。
我怀疑这不是你的目标,所以你可以尝试:
INSERT INTO table (col_1, col_2, col_3, col_4, col_5, col_6, col_7)
SELECT a[1]::int, a[2]::int, a[3]::int, a[4]::int, a[5]::int, a[6]::int, a[7]::int
FROM (SELECT string_to_array('1, 2, 3, 4, 5, 6, 7', ', ') a) stupid_obligitary_alias;
丑陋,但完成工作并允许从文本到整数的类型转换。
我不打算同时为多行尝试这样做。
string_to_array记录在http://www.postgresql.org/docs/current/static/functions-array.html