ERROR: COPY file signature not recognized - Postgresql 9.6

ERROR: COPY file signature not recognized - Postgresql 9.6

我正在使用 Postgresql 9.6 COPY BINARY 命令转储 table

psql -h  $HOSTNAME -U $USERNAME -d $DBNAME  -qAt -c "COPY ( SELECT  co1,col2,col3   FROM tableName) TO STDOUT WITH BINARY" > fileName.dat

并使用以下命令恢复

psql  -U $USERNAME  -d $DBNAME  -qAt -c "COPY BINARY tableName(col1,col2,col3) FROM 'fileName.dat'"

我收到以下错误。 错误:无法识别复制文件签名。

这曾经在 Postgresql 9.4 中运行良好,我是不是遗漏了什么。

找到问题了。 我有 ./~psqlrc 文件,所以每次 psql 命令使用到 运行 时,它都会将 psqlrc 输出添加到生成的 .dat 文件中,因此在恢复错误时会说。 错误:无法识别复制文件签名 所以使用-X选项终于解决了我的问题。

转储命令:

psql -h  $HOSTNAME -U $USERNAME -d $DBNAME  -XqAt -c "COPY ( SELECT  co1,col2,col3   FROM tableName) TO STDOUT WITH BINARY" > fileName.dat

恢复命令

  psql  -U $USERNAME  -d $DBNAME  -qAt -c "COPY BINARY tableName(col1,col2,col3) FROM 'fileName.dat'"