我正在尝试将表从一个数据库复制到另一个数据库(不是模式)。我在终端中使用的代码如下:
pg_dump -U postgres -t OldSchema.TableToCopy OldDatabase | psql -U postgres -d NewDatabase
当我按 Enter 时,它请求 postgres 密码我输入我的通行证,然后它请求 psql 密码。我输入它并按 Enter。我收到很多:
invalid command \N
ERROR: relation "TableToCopy" does not exist
两个表都有UTF8编码。难道我做错了什么?
操作系统:Windows XP
错误输出:
psql:TblToCopy.sql:39236: invalid command \N
psql:TblToCopy.sql:39237: invalid command \N
psql:TblToCopy.sql:39238: invalid command \N
.
.
.
在上面的数百个错误之后,终端回显:
psql:TblToCopy.sql:39245: ERROR: syntax error at or near "509"
LINE 1: 509 some gibberish words and letters here
最后:
sql:TblToCopy.sql:39245: ERROR: relation "TableToCopy" does not exist
编辑 我用 psql 阅读了对相同问题\N 错误的回复,它说使用 INSERT 而不是 COPY,但在文件 pg_dump 中创建了 COPY。如何对 pg_dump 说使用 INSERT 而不是 COPY?
我将带有 iconv 的文件转换为 utf-8。现在该错误已经消失,但我有一个新错误。在这种特殊情况下,当我使用 psql 将数据导入数据库时,会发生一些新的事情。表已创建但没有数据。它说:
SET
SET
SET
SET
SET
SET
SET
SET
CREATE TABLE
ALTER TABLE
psql:tblNew.sql:39610: ERROR: value too long for type character(3)
CONTEXT: COPY words, line 1, column first_two_letters: "سر"
ALTER TABLE
ALTER TABLE
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE TRIGGER