原因:我是使用 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。
