我想一列從varchar轉換使用下面的查詢爲bigint:Vertica的錯誤更改數據類型時
ALTER TABLE 'table_name' ALTER COLUMN 'colname' SET DATA TYPE BIGINT;
,但我得到了以下錯誤:
SQL Error [2377] [0A000]: [Vertica][VJDBC](2377) ROLLBACK: Cannot convert column "colname" from "varchar(128)" to type "int"
[Vertica][VJDBC](2377) ROLLBACK: Cannot convert column "colname" from "varchar(128)" to type "int"
com.vertica.util.ServerException: [Vertica][VJDBC](2377) ROLLBACK: Cannot convert column "src_mainuser" from "varchar(128)" to type "int"
列有int值,如37439510,但採用varchar格式。
看起來像是一個數據問題,你在那裏有一個非整數。嘗試從tablename中選擇colname :: bigint(很確定這是vertica的有效數據轉換語法),如果出錯了,那麼在該列中有一個或兩個字符。 – Twelfth
沒有......沒有錯誤... – anonymous
可能是Vertica的限制......錯誤對信息沒有太大的幫助,沒有提到衝突的數據類型。聯繫供應商,Vertica開發團隊可能會有比我下面所說的更好的答案。標準的解決方法是,創建第二個表,其列的大小爲int,然後將所有行從舊錶中插入到其中。刪除舊錶,重命名新表。如果你從vertica得到更好的答案,請分享。 – Twelfth