微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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:
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
[postgres@localhost ~] cd/home/postgres/db/master/pgsql/data/base/16384pgsqldata[postgres@localhost16384] du -sh
6.3M
(4)如果想用delete清空该表,然后真正清空硬盘空间
mydb=# delete from foo;
DELETE 10000
然后在命令行:
[postgres@localhost ~]$ /home/postgres/db/master/pgsql/bin/vacuumdb mydb
然后再用第3步中的看看,是不是又减少到最初的几兆(我的大约是6M)空间了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐