导入转储时,psql语法错误,可能在' - '上

时间:2015-02-12 16:04:06

标签: database postgresql syntax dump psql

(使用postgres 9.4beta2)

我有一个我要导入的转储。我用' psql'做了这个。命令,与其他地方一样,注意到在使用COPY FROM stdin时需要这样做:

psql publishing < publishing.dump.20150211160001 

我收到此语法错误:

ERROR:  syntax error at or near "fbc61bc4"
LINE 1: fbc61bc4-2875-4a3a-8dec-91c8d8b60bcc root

转储文件中的违规行是COPY语句之后的行,这两行都在一起:

COPY content_fragment (id, content, name, content_item_id, entity_version) FROM stdin;
fbc61bc4-2875-4a3a-8dec-91c8dcontent    Content for root        content fbc61bc4-2875-4a3a-8dec-91c8d8b60bcc    0

数据中的项目似乎是制表符分隔的。我想知道错误消息是在&#34; fbc61bc4&#34;或附近,但是完整的字符串是&#34; fbc61bc4-2875-4a3a-8dec-91c8dcontent&#34;,psql不喜欢&# 39; - &#39;字符?

1 个答案:

答案 0 :(得分:1)

COPY本身因为表不存在而失败,或者其中一个列没有,或者用户没有写入权限等等时,就会发生这种错误......

COPY失败时,SQL解释器继续到下一行并将其解释为是一个SQL语句,尽管它实际上是要传递给COPY的数据。通常这会导致语法错误,之前会出现错误,告诉COPY失败的原因(如果有很多行数据,通常会出现大量错误)。

请参阅另一个问题:psql invalid command \N while restore sql,它具有相同的根本原因并且有一些有用的评论。