我正在和一个同事一起工作,她对Postgres和数据库都是新手。她创建了一个表,表中的列ID是字符变化类型的,并将其作为主键。所以很明显,当运行Python脚本来填充表时,她自己递增了ID,并将其作为字符串插入。她将相当大量的数据插入表中,所以我想修复它,而不是让她重新开始。我需要改变ID列类型串行(她应该使它开始),但我不认为我可以只改变类型,因为它包含字符数据。有人能告诉我最好的方法来解决这个问题吗?
我正在和一个同事一起工作,她对Postgres和数据库都是新手。她创建了一个表,表中的列ID是字符变化类型的,并将其作为主键。所以很明显,当运行Python脚本来填充表时,她自己递增了ID,并将其作为字符串插入。她将相当大量的数据插入表中,所以我想修复它,而不是让她重新开始。我需要改变ID列类型串行(她应该使它开始),但我不认为我可以只改变类型,因为它包含字符数据。有人能告诉我最好的方法来解决这个问题吗?
1条答案
按热度按时间dced5bon1#
serial
不是一个真实的类型。它是一个具有关联序列的整型列。在修改现有列时,您必须自己完成这项工作。我假设这些值是整数,它们只是存储为文本。
字符串
有关最后一条语句的更多信息,请参见this answer。有关串行与标识的更多信息,请参见this answer。
Demonstration的函数。
如果ID值不是整数,那么最好丢弃ID列并创建一个新的ID列,因为这会变得很复杂,所以假设没有外键引用该ID。
型
新的ID列将按顺序填充:1、2、3...
Demonstration的函数。