Restauração Backup PostgreSQL

Pessoal, estou com uma curiosidade/problema.

Tenho um servidor do PostreSQL funcionando, e eu faço o backup pois se precisar tenho a cópia de segurança.

Por um acaso do destino, deu problema no servidor, peguei meu arquivo de backup e inseri no pg_restore.

Pronto! os dados voltaram tudo certo com um porem

Os campos que são auto-incremento, estão com sua sequencia zerado.

Existe alguma forma de arrumar isso? ou vou precisar fazer o campo_continuar a partir do próximo “na unha” ?

Qual os parâmetros que você esta passando no pg_dump?

na verdade eu estava fazendo via pgadmin com o arquivo de forma manual, ai estava dando esse erro. agora estou usando o pg_restore.exe e está quase tudo ok. estou usando o seguinte comando:

comandos.add("C:\\Arquivos de programas\\PostgreSQL\\9.3\\bin\\pg_restore.exe");
       comandos.add("-i");        
       comandos.add("-h");        
       comandos.add("localhost");
       comandos.add("-p");        
       comandos.add("5432");        
       comandos.add("-U");        
       comandos.add(USUARIO_BANCO");        
       comandos.add("-d");        
       comandos.add("NOME_BANCO");       
       comandos.add("-v");        
       comandos.add("C:\\Users\\DexBook\\Desktop\\bkp.backup");   

como estou querendo fazer o restore, se o banco existe ele nao deixa fazer…
se o banco NÃO EXISTE ele tambem nao cria o banco,

tem como arrumar isso ou vou ter que fazer de forma manual a exclusão do banco se existir, e se não existir criar o banco?


edit: vi que para o banco excluir e criar existe esses 2 comando:

-c
--clean

    Gera comandos para excluir (drop) os objetos do banco de dados antes de criá-los.

    Esta opção só faz sentido para o formato texto-puro. Para os outros formatos esta opção pode ser especificada ao se chamar o pg_restore. 
-C
--create

    Inicia a saída por um comando para criar o próprio banco de dados e se conectar ao banco de dados criado (Com um script assim, não importa em qual o banco de dados se está conectado antes de executar o script).

    Esta opção só faz sentido para o formato texto-puro. Para os outros formatos esta opção pode ser especificada ao se chamar o pg_restore. 

porem não consegui implementar no restore, alguem pode me ajudar nisso?

Cara pra fazer backup eu uso o seguinte comando:

pg_dump.exe 
	--host localhost 
	--port 5432 
	--username "postgres" 
	--no-password  
	--format custom 
	--blobs 
	--section pre-data 
	--section data 
	--section post-data 
	--encoding UTF8 
	--inserts 
	--column-inserts 
	--verbose --file "./meubanco.backup" "meubanco"

E pra restaurar o backup:
Obs: os parâmetros –create --clean se o banco de dados existir ele remove e cria um novo banco de dados.

pg_restore.exe 
	--host localhost 
	--port 5432 
	--username "postgres" 
	--dbname "meubanco" 
	--no-password  
	--section pre-data 
	--section data 
	--section post-data 
	--create 
	--clean 
	--jobs 25 --verbose "./meubanco.backup"

Você passa isso através do ProcessBuilder ?

Isso mesmo

String exec = "pg_dump.exe ....";
ProcessBuilder builder = new ProcessBuilder(exec);
builder.redirectErrorStream(true);
builder.environment().put("PGPASSWORD", "sua senha do banco");

Process process = builder.start();

Olá, obrigado pelo retorno, estou fazendo assim:

String comando = "C:\\Arquivos de programas\\PostgreSQL\\9.3\\bin\\pg_restore.exe   "
                + "    --host localhost"
                + "    --port 5432 "
                + "    --username USER_BANCO"
                + "    --dbname os_troca_mercadoria "
                + "    --no-password "
                + "    --section pre-data "
                + "    --section data"
                + "    --section post-data "
                + "    --create  "
                + "    --clean  "
                + "    --jobs 25 --verbose C:\\Users\\DexBook\\Desktop\\bkp.backup";

        ProcessBuilder pb = new ProcessBuilder(comando);
        pb.redirectErrorStream(true);
        pb.environment().put("PGPASSWORD", "SENHA_BANCO");

e estou tendo o seguinte retorno:

pg_restore: conectando ao banco de dados para restaura��o
pg_restore: [arquivador (bd)] conex�o com banco de dados "os_troca_mercadoria" falhou: FATAL:  banco de dados "os_troca_mercadoria" n�o existe

onde estou errando?

Neste caso o seu banco não existe dai você vai ter que rodar o comando pra criar.

createdb.exe 
	--host localhost 
	--port 5432 
	--username "postgres" 
	--no-password "meubanco"

Olá, o comando que possui o “-c” não deveria criar caso o banco não existisse?

EDIT:

-C
–create

Inicia a saída por um comando para criar o próprio banco de dados

Com a opção -C ou --create se o banco existir ele faz um drop depois um create no banco.

então, nesse caso:

String comando = "C:\\Arquivos de programas\\PostgreSQL\\9.3\\bin\\pg_restore.exe " + " --host localhost" + " --port 5432 " + " --username USER_BANCO" + " --dbname os_troca_mercadoria " + " --no-password " + " --section pre-data " + " --section data" + " --section post-data " + " --create " + " --clean " + " --jobs 25 --verbose C:\\Users\\DexBook\\Desktop\\bkp.backup";

ele verifica se o banco existe e em seguida ele cria se não existir?

existe essa opção?