Я пытаюсь скопировать таблицу из одной базы данных в другую базу данных (НЕ). Код, который я использовал в терминале, как показано ниже:Не удается скопировать таблицу в другую базу данных с помощью pg_dump
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
EDIT Я прочитал этот ответ по той же проблеме \N error with psql, он говорит, что вместо INSERT вместо COPY используется INSERT, но в файле 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
вы можете использовать '-n' указать схему – devanand