【发布时间】:2018-04-19 05:53:08
【问题描述】:
我必须将一个大型 CSV 文件导入数据库,其中一列必须是购买的唯一 ID。我将列的类型设置为SERIAL(是的,我知道它实际上不是一个类型)但是因为我已经有一些数据和他们自己的“随机”购买 ID,所以我不确定当我插入新行。
购买 ID 是否会采用尚未使用的值?它会在最大的现有 ID 之后开始吗?它会从 1 开始而不关心某个值是否已在使用中吗?
【问题讨论】:
标签: sql database postgresql
我必须将一个大型 CSV 文件导入数据库,其中一列必须是购买的唯一 ID。我将列的类型设置为SERIAL(是的,我知道它实际上不是一个类型)但是因为我已经有一些数据和他们自己的“随机”购买 ID,所以我不确定当我插入新行。
购买 ID 是否会采用尚未使用的值?它会在最大的现有 ID 之后开始吗?它会从 1 开始而不关心某个值是否已在使用中吗?
【问题讨论】:
标签: sql database postgresql
底层SEQUENCE 不会关心你插入的值(显式为serial 列提供值,推翻默认值),你必须手动调整以避免重复键错误:
SELECT setval(pg_get_serial_sequence('tbl', 'id'), max(id)) FROM tbl;
'tbl' 和'id' 分别是表名和列名。
相关:
【讨论】: