sql >> Database teknologi >  >> RDS >> PostgreSQL

Gendan PostgreSQL-database ved hjælp af java

Det er overraskende, at den kommando, du viser, overhovedet virker, da du undlader at citere mellemrummene i kommandostien. Prøv:

String[] cmd = {
    "D:\\Program Files\\PostgreSQL\\9.1\\bin\\pg_restore.exe",
    "--host", "localhost",
    "--port", "5432",
    "--username", "postgres",
    "--dbname", "mytestqq",
    "--role", "postgres",
    "--no-password",
    "--verbose",
    "D:\\sathish\\rawDatabase.backup"
};
p = r.exec(cmd);

Ændringer:

  • Konverter enkeltstrengsformen til den meget sikrere argumentarrayform for exec ring;
  • Fordoble omvendte skråstreger i rawDatabasen sti, da din oprindelige kommando ikke undslipper skråstreg, så \r er en vognretur i strengen i stedet for \ char efterfulgt af r char.
  • Skift til dobbelte omvendte skråstreger i stedet for fremadgående skråstreger på programstien for at opnå konsistens. Denne ændring er sandsynligvis ligegyldig.

Tjek også processens returstatus. Du skal bruge Process.waitFor() så når den har afsluttet brug Process.exitValue() at bestemme resultatet. Du bør undersøge stderr og stdout fanget af Process objekt for fejl og logningsoplysninger.

Grunden til, at dit program fortsat ikke virker, er sandsynligvis fordi:

  • Du har gamle pg_restore processer, der hænger rundt med låse; og/eller
  • Du bruger ikke stdout og stderr, så pg_restore løber tør for bufferet rørplads og blokerer for skrivning på outputstrømmen.

Dette vil alt sammen være meget enklere, hvis du brug ProcessBuilder i stedet . ProcessBuilder lader dig levere filstrømme til at skrive output til og tager sig generelt af meget af dette for dig. Du skal dog stadig vente på, at processen afsluttes og kontrollere dens returkode.



  1. T-SQL Stuff Kommando

  2. Sådan listes alle standardbegrænsninger med kolonner i SQL Server-databasen - SQL Server / TSQL selvstudium, del 92

  3. MySql vælger dynamiske rækkeværdier som kolonnenavne

  4. Vedhæftning af et ContentDocument til et Salesforce Custom Object