重新组织 postgreSQL 中表的 ID,以便 ID 再次从 1 开始?

Reorganize ID of tables in postgreSQL so that the ID starts again at 1?

您好,我目前正在尝试使用 python 和 postgreSQL 进行不同的数据自动化处理。我自动清理了一个包含 40.000 个数据条目的数据集并将其上传到我的数据库中。由于我的过程中存在一些缺陷,我不得不截断一些 table 或数据条目。


我正在使用:python 3.9.7 / postgeSQL 13.3 / pgAdmin 4 v.5.7

问题

目前我有 table 的 ID,它们的 ID 是从 44700 而不是 1 开始的(由于我的编辑)。

例如,table 个火车站以 ID 41801 开始,以 ID 83599 结束。

问题

如何重组我的索引,使 ID 从 1 开始到 41801?

在线查看后,我发现了诸如“膨胀”或“重建索引”之类的主题。我厌倦了 Vacuum 或 Reindex,但在我的 table 中没有什么真正的区别?到目前为止,我的 table 之间没有任何关系。在 postgreSQL 中解决我的问题的方法是什么?我忽略了一些隐藏的功能?也许这根本不是问题,但它看起来肯定很奇怪。在某个时间点,我的 ID 为 250.000,而我的 table.

中只有 40.000 个数据条目

您是否使用序列生成 table 的 ID 列?如果你的数据库中有一个 Sequence 对象,你可以在你的数据库下的 pgAdmin 中检查它:Schemas -> public -> Sequences.

您可以通过右键单击序列号并将其设置为“1”来更改当前序列号。但仅当您删除了 table 中的所有行并且在您再次开始导入数据之前才执行此操作。

只要您没有任何其他 table 引用您火车站的 ID 列 table,您甚至可以使用如下更新语句来更新 ID:

UPDATE trainStations SET ID = ID - 41801 WHERE 1 = 1;