pg导出数据到html,科学网—Postgresql生成大量测试数据 - 孙鹏的博文

在PostgreSQL中如何用简单的几条SQL语句生成大量的测试数据呢?

此处,我简单的写一个例子,供参考(在Postgresql9.1下面做的):

(1)生成一万条测试数据的表foo

mydb=# create table foo(id bigint);

mydb=# insert into foo select * from generate_series(1,10000);

mydb=# select count(*) from foo;

当然如果您想知道执行该sql的时间,请在执行上述命令前设置:

mydb=# timing on

Timing is on.

最后说明一点的是,我的换了慢速的CPU的笔记本T61,插入一千万条记录要一分多钟 ,faint:

mydb=# insert into foo select * from generate_series(1,10000000);

INSERT 0 10000000

Time: 88694.944 ms

主要参考:

[1]PostgreSQL 之 生成测试数据,http://hi.baidu.com/hjzheng/blog/item/c78ad09320eb5297a877a4f6.html,

[2]http://www.depesz.com/2010/02/02/waiting-for-9-0-table-and-index-sizes/

(2)查看表foo占用的存储空间

mydb=# select pg_table_size('foo');

pg_table_size

---------------

401408

(1 row)

若查看其中的index的空间或整个relation的空间,请参考:http://www.postgresql.org/docs/9.1/static/functions-admin.html ,或:http://www.postgresql.org/docs/9.1/static/functions-admin.html。

(3)查看整个mydb数据库占用的硬盘空间:

mydb=# SELECT oid from pg_database where datname='mydb';

oid

-------

16384

(1 row)

[postgres@localhost ~]$ cd /home/postgres/db/master/pgsql/data/base/16384   注释:这里是pgsql的data目录

[postgres@localhost 16384]$ du -sh

6.3M

(4)如果想用delete清空该表,然后真正清空硬盘空间

mydb=# delete from foo;

DELETE 10000

然后在命令行:

[postgres@localhost ~]$ /home/postgres/db/master/pgsql/bin/vacuumdb mydb

然后再用第3步中的看看,是不是又减少到最初的几兆(我的大约是6M)空间了。

参考:

[1] http://www.postgresql.org/docs/9.1/static/functions-sequence.html

[2] http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-SERIAL

[3] 在postgresql中查看数据库/表占用的物理存储空间大小,http://blog.xupeng.me/2008/02/13/physical-storage-for-dbs-tables-in-postgre/

[4] Waiting for 9.0 – table and index sizes,http://www.postgresql.org/docs/9.1/static/functions-admin.html

加我私人微信,交流技术。

转载本文请联系原作者获取授权,同时请注明本文来自孙鹏科学网博客。

链接地址:http://blog.sciencenet.cn/blog-419883-537217.html

上一篇:rhel6+postgresql8.4+postgis1.4+eclipse CDT3.6 调试环境搭建

下一篇:安装GreenPlum错误socket.gaierror解决办法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值