Tenho o seguinte cenário, tenho um esquema chamado A e um esquema chamado B. Ambos estão no mesmo BD, ambos contém a mesma tabela, só que no esquema B não tem conteúdo, pois trunquei a tabela com a instrução TRUNCATE
.
Tentei usar o aplicativo pg_dump
e pg_restore
com o seguinte comando.
pg_dump --file "table.sql" --username "user" --no-password --verbose --format=p --data-only --table "schemaA.tablename" "db"
Obtenha um script SQL com a seguinte instrução:
COPY schemaA.tablename (column1, column2...) FROM STDIN;
//data
Eu tentei mudar isso
Eu tentei mudar isso COPY
para schemaB
mas sem sucesso, a FROM STDIN
afirmação que presumo é por que pg_restore
leva os dados através de um arquivo e aí está a STDIN
entrada, não poderia fazer assim? Já que fazer as alterações não funciona.
Se isso não for possível, a única coisa que consigo pensar é fazer o seguinte:
INSERT INTO schemaB.tablename
SELECT * FROM schemaA.tablename;
Há muitos dados, não sei até que ponto é aconselhável fazê-lo, qual seria o melhor passo a seguir?
Obrigado!!!
Você não pode restaurar
pg_dump
um esquema diferente.Sua
INSERT INTO ... SELECT ...
solução é boa. Uma alternativa poderia ser usarCOPY ... TO
para gravar o conteúdo da primeira tabela em um arquivo eCOPY ... FROM
carregá-lo na outra tabela.