在PostgreSQL转储文件中,"\." 是什么意思?

4
我有一个Postgresql备份文件,我正在尝试进行恢复。我遇到了一个关于无效数据的错误。

错误:无效输入语法,整数:“。”

当我检查了文件时,发现存在这样的数据:
469215  2009-10-10 18:16:47.041377  0   1
471217  2009-10-10 18:25:12.536352  0   1
473224  2009-10-17 09:46:43.041604  0   1
473228  2009-10-22 10:58:40.194244  0   1
.

我在想这个“.”有什么作用?我查看了一些其他工作转储文件,发现它们都以“.”结束数据行,我猜这是正确的语法!

请告诉我正确的语法是什么,它是做什么的? 谢谢。

1个回答

2
似乎这标志着COPY语句的结束。
来自官方文档
End of data can be represented by a single line containing just backslash-period (\.).
 An end-of-data marker is not necessary when reading from a file, since the end of file 
serves perfectly well; it is needed only when copying data to or from client
applications using pre-3.0 client protocol.

有没有办法绕过这个问题?就像将其设置为忽略它一样?因为转储文件几乎有1200万行,逐个搜索所有复制语句并替换其结尾为"."真是很麻烦! - undefined
我脑海中没有一个具体的例子。然而,使用一些像"sed"这样的工具来轻松地进行更改应该相当容易... - undefined
在你编辑文件之前,你可能想先弄清楚它是如何发生的 - pg_dump总会生成正确的终止符号...(这也是始终使用“自定义”转储格式的另一个原因,当然) - undefined
实际上数据并不是真正的pg_dump格式,而是从磁盘中恢复出来的原始数据。我找到了一个方法!我使用了一段Python代码将那些句点(.)转换成了新行后面加上反斜杠(\):) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接