@echo off
set idb=VionCount
set back_dir=D:\123.backup
set isql=C:\Program Files\PostgreSQL\8.1\bin\pg_dump.exe
set PGUSER=postgres
set PGPASSWORD=vion
"%isql%" -i -h localhost -p5432  -F c -b -v -f "%back_dir%" %idb%
这是我的备份的批处理程序,没有问题.现在我想搞个还原的,实在是找不到了~哪位大哥大姐懂呢~帮帮小弟吧,谢谢了~

解决方案 »

  1.   

    pg_dump 生成的文本文件可以由 psql 程序读取. 从转储中恢复的常用命令是psql dbname < infile这里的 infile 就是你 给pg_dump命令的 outfile 参数.这条命令不会创建数据库 dbname,你必须在执行psql 前自己从template0创建(也就是说,用命令 createdb -T template0 dbname). psql 支持类似 pg_dump 的选项用以控制数据库服务器位置 和用户名.参考它的手册获取更多信息.用pg_dump恢复;
    从备份中恢复数据的工作比执行备份甚至更简单——您所要做的就是通过执行备份文件中的SQL命令来对数据库进行恢复。如果您是使用pg_dump 对某一个数据库进行了备份,那么备份中就会有CREATE TABLE 的语句来对源表进行复制。当然,您首先要新创建一个空数据库来存放这些数据表。您可以使用createdb 这个工具来完成这一步工作,这个工具也是PostgreSQL 套件中的一部分:xiaop@xiaop-laptop:~$ /usr/lib/postgresql/8.2/bin/createdb mydb(数据库名称)
    现在您就可以执行备份文件中的SQL命令来对数据库进行恢复了, pg_dump 生成的文本文件可以由 psql 程序读取。 从转储中恢复的常用命令格式是:psql dbname < infile如下例所示:xiaop@xiaop-laptop:~$ /usr/lib/postgresql/8.2/bin/psql -h localhost -U xiaop(用户名) -d mydb(数据库名称) < mydb.bak3.2 用pg_dumpall恢复;
    如果您是使用pg_dumpall对所有的数据库进行备份的,就没有必要先新建一个数据库,因为备份文件中已经包含了完成CREATE DATABASE工作的相关的调用。在这里,只需要在psql命令行客户端中输入对应的备份文件就可以了,而不需要指定目标数据库:xiaop@xiaop-laptop:~$ /usr/lib/postgresql/8.2/bin/psql -h localhost -U xiaop(用户名 ) < all.bak
    一旦数据恢复完成后,您就可以登录到服务器并查看到已恢复的数据。
      

  2.   

    为什么不用pgadmin或别的可视化工具呢?多方便啊
      

  3.   

    忘记说了~我是在windows下的~谢谢了
      

  4.   

    生成一个BAT文件嘛,内容就是
    psql dbname < infile 
    不行?
      

  5.   

    比如:
    psql -d DBNAME -U postgres -f ./a.sql
      

  6.   

    psql -d DBNAME -U postgres -f ./a.sql 这个是备份的还是还原的?
    我用
    @echo off
    set isql=C:\Program Files\PostgreSQL\8.1\bin\pg_dump.exe
    %isql% te< D:\123.backup 
    没效果
      

  7.   

    @echo off
    psql -d te -U postgres -f D:/VionCount.sql 
    用这个也什么效果都没有
      

  8.   

    @echo off
    psql -d 123 -U postgres -f D:/VionCount.sql 
    我用这个也没效果
      

  9.   

    psql -d database -f db.out
    or
    pg_restore -d newdb db.out
    恢复数据库
      

  10.   

    123是我postgresql中的一个空数据库
    pg_restore -d 123 d:/VionCount.backup 
    pg_restore -d d:/VionCount.backup 123
    psql -d d:/VionCount.backup  -f  123
    psql -d 123  -f  d:/VionCount.backup  
    123还是空的
      

  11.   

    @echo off
    set idb=123
    set back_dir=D:\123.backup
    set isql=C:\Program Files\PostgreSQL\8.1\bin\pg_restore.exe
    set PGUSER=postgres
    set PGPASSWORD=vion
    "%isql%" -i -h localhost -p5432 -U postgres -d "123" -v "back_dir"应该这样,解决了