我正在将一个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
,我认为这意味着我的语法不正确。
非常感谢任何帮助!
答案 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=>