To_tsvector()内部的批量COPY FROM STDIN Postgres

时间:2017-01-13 22:33:35

标签: java postgresql tsvector

我正在将一个CSV文件批量加载到Postgres中,而不是每次插入记录时使用数据库触发器更新ts_vector列,我试图插入一个COPY FROM STDIN,其记录看起来像

"some text value", to_tsvector('English', 'some text value')

看我是否有任何性能提升。我可以使用INSERT INTO tablename VALUES()语句从Postgres shell手动执行此操作,但是当我从COPY FROM执行此操作时,我得到一个ERROR: extra data after last expected column,我认为这意味着我的语法不正确。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您无法在COPY中使用功能。它只允许实际值。您将需要使用INSERT语句或创建触发器来更新您的tsvector。

或者,您可以尝试手动生成适当的tsvector字符串,但这不值得麻烦(容易出错,可能不会更快)。

以下是格式:

postgres=> SELECT to_tsvector('The quick brown fox jumped over the lazy dog.');
                  to_tsvector                      
-------------------------------------------------------
 'brown':3 'dog':9 'fox':4 'jump':5 'lazi':8 'quick':2
(1 row)

postgres=>