可執行的程序都在Postgre安裝文件下的bin中。
1、導出特定數據庫的insert腳本
1.1命令:
pg_dump --column-insert -t operatebatchdetaillog -h 192.168.1.102 -U enterprisedb -a -f D:\db_scripts\bak.sql edb
1.2說明
1.2.1:pg_dump.exe是一個用來導入導出的可執行文件,關於它的用法可以使用pg_dump --help來查看。
1.2.2:--column-insert的意思是生成insert腳本且腳本中包含表的列名,如果只寫-insert不寫--column,生成的insert腳本中不包含表的列名。
1.2.3:-t后跟的是表名,如果你想把目標數據庫中的所有表的insert文都導出來,那么不需要指定-t。
1.2.4:-h 后面跟目標數據庫的ip,-U 后跟數據庫的用戶名,-f 后跟輸出目標的文件路徑,最后的那個"edb" 是目標數據庫的名稱 。
2、導出特定數據庫的數據
2.1命令:
pg_dump -h 192.168.1.102 -U enterprisedb basedb > D:\db_scripts\basedb.data
2.2說明
2.2.1:basedb是目標數據庫的名字,">"號的方向說明了數據導出的方向,上面的例子就是將數據庫basedb中的數據導成一個可被用來還原的備份文件,這個文件的后綴名可以隨便寫,它並不是一個二進制文件,使用UE打開以后你會發現它就是堆文本。
3、導入特定數據庫的數據
3.1命令:
psql -h 127.0.0.1 -U enterprisedb basedb < basedb.data
3.2說明:
3.2.1:psql.exe類似於OracleDB中的sqlplus,是Postgre的命令行執行終端。它除了可以執行你手動敲進去的命令,當然也能夠執行命令文本。但本例中比較高級的是basedb.data看起來貌似是一個二進制文件之類的大對象,上例中說了,這個文件其實就是個文本,所以它能夠被psql執行也就合情合理了。
3.2.2:"<"依舊形象地指明了導入的方向,無須贅述。
3.2.3:很重要的一點是,在執行導入數據時你必須保證導入到的目標數據庫的用戶、數據庫和權限等設置已經准備好。但貌似Postgre在導出數據庫時並沒有順便幫你導出這些,需要自己手動敲命令或者在PostgrePlus里建。本例中筆者就厚道的提供幾個簡單的例子吧:
create user michael with password 'jordan' CREATEDB; //創建用戶
drop database if exist basedb;
create database basedb with owner michael encoding 'utf-8'; // 創建數據庫,指定編碼方式