Veri Ambarında (DWH) bazen kaynak tablolardaki sütunların hassasiyeti (precision, duyarlık) artıyor. Örneğin VARCHAR2(20 BYTE)’den, VARCHAR2(30 BYTE)’ye çıkabiliyor. Bu durumda kaynaktan alınan data veri ambarındaki tablolara yazılmak istendiğinde ORA-12899 hatası ile karşılaşılıyor. Bu durumu simüle ettiğim kod aşağıdaki gibidir:
CREATE TABLE tbl_test AS
SELECT CAST(NULL AS VARCHAR2(20 BYTE)) AS clmn
FROM sys.dual;
INSERT INTO tbl_test
SELECT '30 karakterlik string ifademiz' AS clmn
FROM sys.dual;
--ORA-12899: value too large for column "TBL_TEST"."CLMN" (actual: 30, maximum: 20)
2 farklı çözüm yöntemi var. 1 tanesi substr ile insert edilecek tablodaki sütunun maksimum değeri kadar değer alınıp insert edilebilir. Numerik için bu yöntemi önermiyorum. 2. yöntemi yani hedef tablonun ilgili sütununu modify etme yöntemi uygulanmalı.
Continue reading