PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kembalikan database PostgreSQL menggunakan java

Mengejutkan bahwa perintah yang Anda tampilkan berfungsi sama sekali, karena Anda gagal mengutip spasi di jalur perintah. Coba:

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);

Perubahan:

  • Konversikan bentuk string tunggal ke bentuk larik argumen yang jauh lebih aman dari exec panggilan;
  • Gandakan garis miring terbalik di rawDatabase jalur karena perintah asli Anda gagal lolos dari garis miring terbalik, jadi \r adalah carriage return dalam string alih-alih \ char diikuti oleh r karakter.
  • Beralih ke garis miring terbalik dua kali lipat alih-alih garis miring ke depan pada jalur program untuk konsistensi. Perubahan ini mungkin tidak masalah.

Periksa juga status pengembalian proses. Anda harus menggunakan Process.waitFor() kemudian setelah keluar gunakan Process.exitValue() untuk menentukan hasilnya. Anda harus memeriksa stderr dan stdout yang ditangkap oleh Process objek untuk kesalahan dan informasi logging.

Alasan program Anda terus tidak berfungsi mungkin karena:

  • Anda memiliki pg_restore lama proses berkeliaran memegang kunci; dan/atau
  • Anda tidak menggunakan stdout dan stderr jadi pg_restore kehabisan ruang pipa buffer dan memblokir penulisan pada aliran keluaran.

Ini semua akan jauh lebih sederhana jika Anda gunakan ProcessBuilder sebagai gantinya . ProcessBuilder memungkinkan Anda menyediakan aliran file untuk menulis output dan umumnya menangani banyak hal ini untuk Anda. Anda masih harus menunggu hingga proses berhenti dan memeriksa kode pengembaliannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. python terhubung ke postgresql dengan libpq-pgpass

  2. Apakah ada cara untuk mengatasi semua elemen array JSON saat membuat batasan di PostgreSQL?

  3. Bagaimana cara menempatkan psql di jalur saat menggunakan Postgres.app di OS X?

  4. Bagaimana menemukan nama database folder \data\base postgres?

  5. pernyataan untuk npgsql menggunakan parameter