1

我将 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我认为这意味着我的语法不正确。

对此的任何帮助将不胜感激!

4

1 回答 1

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=> 
于 2017-01-14T00:37:38.353 回答