【发布时间】:2013-12-16 20:34:51
【问题描述】:
我在重排数据表方面进行了一些操作,到目前为止效果很好。
在一个超过 50000 行的表中,我有一个文本列,其中的文本只能是数字。
现在我想将其转换为整数列。
所以:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE integer;
这会产生错误 42804: *datatype_mismatch*
通过阅读文档,我找到了解决方案:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE integer USING (TRIM(mycolumn)::integer);
但我知道数据的平均数字顺序可能不正确,因为这会“掩盖”错误,并且有可能(手动)编辑了列。毕竟,可能只是添加了尾随空格或进行了其他一些小的编辑。
我有数据备份。
我如何找到给定列的哪个确切单元格包含错误以及哪个值不能通过一些适合从 pgadmin 使用的方便查询转换为 int?
如果不是太复杂,请那个查询。
【问题讨论】:
-
this answer 不是为您提供解决方案吗?
-
有一些提示,但我仍然不知道如何在所描述的需要中使用它们。
-
在转换为 int 时,我只能得到“整数的输入语法无效”错误。什么样的垃圾会产生 datatype_mismatch 错误?
标签: postgresql