2017-01-13 4 views
1

CSVファイルをPostgresにバルクロードし、レコードを挿入するたびにデータベーストリガを使用してts_vector列を更新するのではなく、私は、任意の性能向上を取得する場合To_tsvector()内の一括コピーCOPY FROM STDIN Postgres

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

ように見えるレコードを持つSTDIN FROM COPYを参照してください。 PostgresシェルからINSERT INTO tablename VALUES()ステートメントを使って手動で行うことができますが、COPY FROMから行うと、ERROR: extra data after last expected columnが得られます。これは、構文が正しくないことを意味します。

これについてのお手伝いをさせていただきます。

答えて

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=> 
:ここ

は、フォーマットは次のようになります

関連する問題