通过PG ADMIN中点击数据库可以查看,但是在导出数据库或查询时报如下错误,应该是硬盘有坏道,
现在的问题是我该如何导出数据(主要是保留数据,不能丢啊),用select 查询时也会报这个错F:\pg_8.3\bin\pg_dump.exe -h localhost -p 5432 -U postgres -F c -v -f "G:\20111105德牙数据备份\20111105_db_storelib_outputlog.backup" -t "\"public\".\"tbl_outputlog\"" db_storelib
pg_dump: 读取模式
pg_dump: 读取用户定义函数
pg_dump: 读取用户定义类型
pg_dump: 读取过程语言
pg_dump: 读取用户定义聚集函数
pg_dump: 读取用户定义操作符
pg_dump: 读取用户定义操作符集
pg_dump: 读取用户定义的文本搜索解析器
pg_dump: 读取用户定义的文本搜索模板
pg_dump: 读取用户定义的文本搜索字典
pg_dump: 读取用户定义的文本搜索配置
pg_dump: 读取用户定义操作符
pg_dump: 读取用户定义的字符集转换
pg_dump: 读取用户定义表
pg_dump: 读取表继承信息
pg_dump: 读取重写规则
pg_dump: 读取类型转换
pg_dump: 正在查找关系继承
pg_dump: 正在读取感兴趣表的列信息
pg_dump: 正在查找表 "tbl_outputlog" 的字段和类型
pg_dump: 在子表里标记继承字段
pg_dump: 读取索引
pg_dump: 为表 "tbl_outputlog" 读取索引
pg_dump: 读取约束
pg_dump: 读取触发器
pg_dump: 读取从属数据
pg_dump: 正在保存encoding = UTF8
pg_dump: 正在保存standard_conforming_strings = off
pg_dump: 正在转储表 tbl_outputlog 的内容
pg_dump: SQL 命令失败
pg_dump: 来自服务器的错误信息: ERROR: invalid page header in block 51 of relation "tbl_outputlog"
pg_dump: 命令是: COPY public.tbl_outputlog (sserialno, iitemno, sitemspce, sitemname, sunit, nprice, icount, ntotalprice, sdatetime, ssaleid, soprid, scustomid, sname, ioprtype, sdetail, ivalid) TO stdout;
pg_dump: *** 因为错误退出
表结构如下:
CREATE TABLE tbl_outputlog
(
sserialno character varying(100) NOT NULL,
iitemno integer NOT NULL,
sitemspce character varying(40),
sitemname character varying(100) NOT NULL,
sunit character varying(20),
nprice numeric(10,2) NOT NULL,
icount integer NOT NULL,
ntotalprice numeric(12,2) NOT NULL,
sdatetime character varying(30),
ssaleid character varying(40),
soprid character varying(30),
scustomid character varying(40),
sname character varying(50),
ioprtype integer NOT NULL,
sdetail character varying(200),
ivalid integer,
CONSTRAINT tbl_outputlog_pkey PRIMARY KEY (sserialno, iitemno)
)
WITH (OIDS=FALSE);
ALTER TABLE tbl_outputlog OWNER TO postgres;
现在的问题是我该如何导出数据(主要是保留数据,不能丢啊),用select 查询时也会报这个错F:\pg_8.3\bin\pg_dump.exe -h localhost -p 5432 -U postgres -F c -v -f "G:\20111105德牙数据备份\20111105_db_storelib_outputlog.backup" -t "\"public\".\"tbl_outputlog\"" db_storelib
pg_dump: 读取模式
pg_dump: 读取用户定义函数
pg_dump: 读取用户定义类型
pg_dump: 读取过程语言
pg_dump: 读取用户定义聚集函数
pg_dump: 读取用户定义操作符
pg_dump: 读取用户定义操作符集
pg_dump: 读取用户定义的文本搜索解析器
pg_dump: 读取用户定义的文本搜索模板
pg_dump: 读取用户定义的文本搜索字典
pg_dump: 读取用户定义的文本搜索配置
pg_dump: 读取用户定义操作符
pg_dump: 读取用户定义的字符集转换
pg_dump: 读取用户定义表
pg_dump: 读取表继承信息
pg_dump: 读取重写规则
pg_dump: 读取类型转换
pg_dump: 正在查找关系继承
pg_dump: 正在读取感兴趣表的列信息
pg_dump: 正在查找表 "tbl_outputlog" 的字段和类型
pg_dump: 在子表里标记继承字段
pg_dump: 读取索引
pg_dump: 为表 "tbl_outputlog" 读取索引
pg_dump: 读取约束
pg_dump: 读取触发器
pg_dump: 读取从属数据
pg_dump: 正在保存encoding = UTF8
pg_dump: 正在保存standard_conforming_strings = off
pg_dump: 正在转储表 tbl_outputlog 的内容
pg_dump: SQL 命令失败
pg_dump: 来自服务器的错误信息: ERROR: invalid page header in block 51 of relation "tbl_outputlog"
pg_dump: 命令是: COPY public.tbl_outputlog (sserialno, iitemno, sitemspce, sitemname, sunit, nprice, icount, ntotalprice, sdatetime, ssaleid, soprid, scustomid, sname, ioprtype, sdetail, ivalid) TO stdout;
pg_dump: *** 因为错误退出
表结构如下:
CREATE TABLE tbl_outputlog
(
sserialno character varying(100) NOT NULL,
iitemno integer NOT NULL,
sitemspce character varying(40),
sitemname character varying(100) NOT NULL,
sunit character varying(20),
nprice numeric(10,2) NOT NULL,
icount integer NOT NULL,
ntotalprice numeric(12,2) NOT NULL,
sdatetime character varying(30),
ssaleid character varying(40),
soprid character varying(30),
scustomid character varying(40),
sname character varying(50),
ioprtype integer NOT NULL,
sdetail character varying(200),
ivalid integer,
CONSTRAINT tbl_outputlog_pkey PRIMARY KEY (sserialno, iitemno)
)
WITH (OIDS=FALSE);
ALTER TABLE tbl_outputlog OWNER TO postgres;
进入psql
COPY (SELECT * FROM public.tbl_outputlog limit xxx,yyy ) to stdout
xxx 为起始行
yyy 为行数
你只能一个个试, 能导出多少是多少
pg_dump 把一个数据库转储为纯文本文件或者是其它格式.用法:
pg_dump [选项]... [数据库名字]一般选项:
-f, --file=FILENAME output file or directory name
-F, --format=c|d|t|p output file format (custom, directory,
text)
-v, --verbose 详细模式
-Z, --compress=0-9 被压缩格式的压缩级别
--lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败
--help 显示此帮助信息, 然后退出
--versoin 输出版本信息, 然后退出控制输出内容选项:
-a, --data-only 只转储数据,不包括模式
-b, --blobs 在转储中包括大对象
-c, --clean 在重新创建之前,先清除(删除)数据库对象
-C, --create 在转储中包括命令,以便创建数据库
-E, --encoding=ENCODING 转储以ENCODING形式编码的数据
-n, --schema=SCHEMA 只转储指定名称的模式
-N, --exclude-schema=SCHEMA 不转储已命名的模式
-o, --oids 在转储中包括 OID
-O, --no-owner 在明文格式中, 忽略恢复对象所属者 -s, --schema-only 只转储模式, 不包括数据
-S, --superuser=NAME 在转储中, 指定的超级用户名
-t, --table=TABLE 只转储指定名称的表
-T, --exclude-table=TABLE 只转储指定名称的表
-x, --no-privileges 不要转储权限 (grant/revoke)
--binary-upgrade 只能由升级工具使用
--column-inserts 以带有列名的INSERT命令形式转储数据
--disable-dollar-quoting 取消美元 (符号) 引号, 使用 SQL 标准引
--disable-triggers 在只恢复数据的过程中禁用触发器
--inserts 以INSERT命令,而不是COPY命令的形式转储数
--no-security-labels do not dump security label assignments
--no-tablespaces 不转储表空间分配信息
--no-unlogged-table-data do not dump unlogged table data
--quote-all-identifiers quote all identifiers, even if not key
--serializable-deferrable wait until the dump can run without an
--use-set-session-authorization
使用 SESSION AUTHORIZATION 命令代替
ALTER OWNER 命令来设置所有权联接选项:
-h, --host=主机名 数据库服务器的主机名或套接字目录
-p, --port=端口号 数据库服务器的端口号
-U, --username=名字 以指定的数据库用户联接
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
--role=ROLENAME do SET ROLE before dump如果没有提供数据库名字, 那么使用 PGDATABASE 环境变量
的数值.