gpt4 book ai didi

PostgreSQL Generate_Series() 插入未完成

转载 作者:行者123 更新时间:2023-11-29 13:10:27 24 4
gpt4 key购买 nike

所以我试图跳过使用外部脚本生成模拟数据,而是在 PostgreSQL 中使用 generate_series()。如果我确实尝试减少行数,充其量它会返回“无法写入 block :临时日志文件......设备上没有足够的空间”。

代码:

CREATE TABLE posts(
id INTEGER PRIMARY KEY,
author VARCHAR(20),
likes INTEGER,
content VARCHAR(200),
posted TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO posts
SELECT DISTINCT id, author, likes, content, posted FROM
generate_series(1,10000) AS id, substr(md5(random()::text), 0, 20) AS
author, generate_series(1,10000) AS likes, md5(random()::text) AS
content, generate_series('2007-02-01'::timestamp,
'2018-04-01'::timestamp, '1 hour') AS posted;

我能想到的几种可能性:

  • 这在某种程度上导致了分支因素,在这种情况下可能有更有效的方式来编写它
  • 我的硬件不足(i5-4210U、8GB 内存、500GB 硬盘和大约 20GB空间的左边)。但我也在我的 2TB 台式机上运行了它,得到了相同的结果。
  • md5 散列或 random() 函数造成了巨大的阻塞,这就是为什么我的计算机在运行此查询的前几分钟就死机了。

最佳答案

通过执行您在 from 子句中执行的操作,您将获得您生成的所有集合的笛卡尔积。如果您只想生成 10000 行,那么您需要的是类似下面的内容。

INSERT INTO posts
SELECT id, substr(md5(random()::text), 0, 20) AS author, (random() * 100)::integer AS likes,
md5(random()::text) AS content, '2007-02-01'::timestamp + (id * '1 hour'::interval) AS posted
FROM
generate_series(1,10000) AS id

关于PostgreSQL Generate_Series() 插入未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55502706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com