首页 文章

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

提问于
浏览
0

(使用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

数据中的项目似乎是制表符分隔的 . 我想知道错误消息在“fbc61bc4”或附近说,但完整的字符串是“fbc61bc4-2875-4a3a-8dec-91c8dcontent”,psql不喜欢' - '字符吗?

1 回答

  • 1

    COPY 本身失败时会发生这种错误,因为该表没有't exist, or one of the mentioned columns doesn' t,或者用户没有写入的权限等等......

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

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

相关问题