PostgreSQL:快速生成大字段值的方法

今天bbs里有朋友问如下问题 “ 请问创建一个表,只插20条左右的记录,使其大小在1G以上,怎么实现?”,我们可以这样理解,如何快速生成一条大记录。在 PostgreSQL 中,最大字段值是有限制的,限制为 1 GB。那么如何来构造一个大字段呢,相信方法很多,这里提供一个简单的方式,计划使用 row_to_json 函数生成一个 array 值,SQL 如下:

生成大字段的SQL

1
2
3
4
5
WITH query_1 as
(
select a, a||'_francs', clock_timestamp() from generate_series(1,5000000) a
)
insert into test_array(name) select array_agg(col1) from (select row_to_json(c) as col1 from query_1 c ) d ;

测试: 生成大字段表

1.1 创建表

1
2
francs=> create table test_array(name json[]);
CREATE TABLE

1.2 插入一条大记录

1
2
3
4
5
6
7
8
9
10
11
12
13
francs=> with query_1 as
francs-> (
francs(> select a, a||'_francs', clock_timestamp() from generate_series(1,5000000) a
francs(> )
francs-> insert into test_array(name) select array_agg(col1) from (select row_to_json(c) as col1 from query_1 c ) d ;
INSERT 0 1

francs=> /dt+ test_array
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------------+-------+--------+-------+-------------
francs | test_array | table | francs | 66 MB |
(1 row)

备注:这里先通过 generate_series 函数生成 5000000 条记录,然后将这些记录转换成 JSON,最后转换成数组并插入到表 test_array 表中,如果机器性能好,可以把这个数搞大点,这样,插入数条记录后数据很容易超过 1 GB。

参考

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/237998.html

(0)
上一篇 2022年1月29日
下一篇 2022年1月29日

相关推荐

发表回复

登录后才能评论