Linux環境下 PostgreSQL 導表的一些坑


  加班是為了不加班。

  Java中使用了Process類,process類提供了執行從進程輸入,執行輸出到進程,等待進程完成,檢查進程的推出狀態,以及shut down掉進程。

  

Process process =null;
String command1 = “你的命令”;
process = Runtime.getRuntime().exec(command1);
process.waitFor();

  一般這樣寫就可以調用了。

  在Linux環境下,想通過PostgerSQL自身的命令來進行導表,要准備以下幾個事。

  1. 准備好要導入的表,最好也是使用PostgreSQL導出的,存放於Linux某目錄,用於導入;

     2.設置好PostgreSQL命令的環境變量,和設置JDK一樣(很重要),將~/.bash_profile下的加一個PATH路徑,指向到bin目錄;

       3.設置密碼配置;

  

方法一:設置環境變量 PGPASSWORD   

PGPASSWORD  是 PostgreSQL 系統環境變量,在客戶端設置這后,那么在客戶端連接遠端數據庫時,將優先使用這個密碼。


--測試
postgres@linux-> export PGPASSWORD=mypassword                

postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres
psql (8.4.4)
Type "help" for help.                          
                                                       
Mydb=> \q             

     備注:設置環境變量  PGPASSWORD ,連接數據庫不再彈出密碼輸入提示。 但是從安全性方面考慮,這種方法並不推薦。


方法二:設置 .pgpass 密碼文件
       
通過在客戶端 /home/postgres 目錄下創建隱藏文件 .pgpass ,從而避免連接數據庫時彈出密碼輸入提示。

--創建密碼文件 .pgpass ( on 客戶端 )                               
vi /home/postgres/.pgpass       
                                     
--格式                                                               
hostname:port:database:username:password                             
                                                                     
--范例                                                               
192.168.1.25:5432:Mydb:postgres:mypassword                                   
                                                                     
--權限                                                               
Chmod 600 .pgpass                  

--連接測試
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres

psql (8.4.4)
Type "help" for help.                          
                                                       
Mydb=>

      備注:在/home/postgres 目錄創建了密碼文件 .pgpass 文件后,並正確配置連接信息,那么客戶端連接數據時會優先使用 .pgass文件, 並使用匹配記錄的密碼,從而不跳出密碼輸入提示,這種方法比方法一更安全,所以推薦使用創建 .pgpass 文件方式。                                

                               
方法三:修改服務器端 pg_hba.conf

修改認證文件 $PGDATA/pg_hba.conf, 添加以下行, 並 reload使配置立即生效。
     
host    Mydb         postgres            192.168.0.0/24           trust

[postgres@linux]$ pg_ctl reload -D $PGDATA / service postgresql reload
server signaled

--服務器端 pg_hba.conf 的配置
# IPv4 local connections:
host    all             all                 127.0.0.1/32               trust
host    Mydb        postgres       192.168.0.0/24           trust
host    all             all                  0.0.0.0/0                    md5

--客戶端再次連接測試
postgres@linux-> psql -h 192.168.1.25 -p 5432 Mydb postgres

psql (8.4.4)
Type "help" for help.    

Mydb=> \q

     備注:修改服務端 pg_hba.conf 並 reload 后,不再彈出密碼輸入提示。

  

      我目前使用的第一種。該方法我還會繼續改進一下。

  然后使用psql命令就可以正確導入了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM