如何使用文件内容更新psql中的单个字段?

时间:2014-04-24 03:32:56

标签: sql postgresql psql

我正在尝试执行以下操作:

UPDATE bodycontent set body=CONTENT_FROM_FILE where contentid=12943363;

我根据this question的最高投票答案尝试了以下内容。

\set contentfill `cat Foo.txt`
UPDATE bodycontent set body=:'contentfill' where contentid=12943363;

这会导致以下错误。

ERROR:  syntax error at or near ":"                                                  
LINE 1: UPDATE bodycontent set body=:'contentfill' where contentid=1...              

psql命令行上有没有一种干净,简单而有效的方法来实现这一目的?

以下是psql --version的输出:

psql (PostgreSQL) 8.4.17 

1 个答案:

答案 0 :(得分:0)

经过多次搜索,我发现了this answer,它没有直接讨论阅读文件的问题,而是给了我必要的成分,使我的古代Postgres能够使用。

\set contentFill `cat Foo.txt`
\set quoted_contentFill '\'' :contentFill '\''
UPDATE bodycontent SET body=:quoted_contentFill WHERE contentid=12943363; 

当然,如果Foo.txt内有未转义的引号,这将失败,但我可以轻松预处理以确保没有。