Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500)的解決方案


原因:我是使用 CREATE TABLE XXX AS subquery 進行創建的數據表,主要是將相關的數據聚合在一起,然后通過導出為SQL腳本文件,進行導入到新庫中,導致部分INSERT INTO語句,因數據庫字符集的不一致生成的CREATE TABLE表結構的字段類型長度不一致,從而會插入失敗value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500) ;因為長度不兼容

解決方法就是在對應SELECT的出錯字段上,使用CONVERT轉換字符集或者使用CAST將類型的長度設置大點,然后CREATE TABLE會根據你設置的字段類型為表結構的類型;但是使用CONVERT轉換字符集后,進行查詢會導致 ORA-29275: partial multibyte character 錯誤。

所以我這邊解決的方式是使用CAST轉換類型吧

CREATE TABLE XXX AS

SELECT CAST(col AS VARCHAR(1000)),... FROM xxx;

 

CAST函數文檔:https://docs.oracle.com/database/121/SQLRF/functions024.htm#SQLRF00613

 

使用CONVERT函數示例:

CREATE TABLE XXX AS

SELECT CONVERT(col,'AL32UTF8'),... FROM xxx;

 

CONVERT函數文檔:https://docs.oracle.com/database/121/SQLRF/functions041.htm#SQLRF00620

如果只執行CONVERT的SELECT子句,會出錯 ORA-29275: partial multibyte character ,但是 CREATE TABLE XXX AS SELECT 一起執行,不會出錯,但是查詢生成的表也會報錯ORA-29275。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM